Перейти к содержанию
Fire Monkey от А до Я

Камышев Александр

Пользователи
  • Постов

    235
  • Зарегистрирован

  • Посещение

  • Победитель дней

    9

Весь контент Камышев Александр

  1. Разработчики же написали русским по белому: the .so file itself is probably not compatible with that tablet and/or OS version Интересно в режиме эмуляции .so file станет compatible?
  2. счастливые обладатели Intel Atom... Причина - некорректная работа SDK для x86, Как вариант - Android на Atom умеет эмулировать armeabi, удали из Deploy или прямо из APK/lib/ папку x86. При установке андроид не найдет ее и установит приложение в режиме эмуляции arm, скорее всего будет работать.
  3. имхо... Bind Visually противоречит шаблонам MVC, и полезен скорее для "HelloWord" проектов, да и с СУБД лучше воевать вручную, хотя SQLite - "недобаза", однако лучше сразу "по-взрослому". Bind Visually работает в блокирующем режиме? - неясно, скорее всего блокирует интерфейс; насколько корректно работает AutoCommit? - неясно, видимо на каждое действие проходит commit; какая будет ситуация с уровнями изоляции? - непонятно... слишком много потенциальных проблем.
  4. разница между бинарными данными и их представлением в виде строки шестнадцатеричных чисел chaplin некорректно сформулировал вопрос, правильно сформулированный вопрос - уже половина ответа, да профессионализм приходит с опытом
  5. вот все злые, пристали к программеру, наговорили всякого, человек хочет тупо массив данных в HEX просматривать, что от него уходит... IntToHex используй, вот код на си: AnsiString s; for ( unsigned int i = 0; i < size; i++ ) s += IntToHex( ( (unsigned __int8)(data[i] ), 2 ) + " "; на выходе строка HEXов через пробел
  6. и у TLayout и TFrame есть TCanvas, его можно скопировать или сохранить в файл
  7. Project->Build APK будет лежать в папке Android\Debug(либо Release)\<имя>\bin\
  8. Если поток провалится в ожидание с параметром INFINITE или ReadUntilDisconnect, типа Socket.ReadStream то можно завеситься на неоределенное время и при поднятом флаге.
  9. В случае виндовс, если очень хочется, можно создавать дочерние процессы, в этих процессах что-то делать ресурсозатратное и уничтожать их в любое время.
  10. Ответ - никак, нет такого механизма, в винде можно принудительно хэндл потока закрыть, но это тоже заканчивается крахом. метод Terminate только выставляет флаг Terminated и все, по флагу FreeOnTerminate, после отработки потока, т.е. после выхода из процедуры TBufferThread.Execute поток будет удален автоматически. Без необходимости не надо применять потоки, или применять потокозащищенные методы, если уж никак, то работать с ними нужно трепетно: - не использовать засыпающие надолго функции типа Sleep(10000); - в компонентах типа доступа к базам данных, tcp, http и т.п. жестко контролировать таймауты; - не обращаться к компонентам основного потока, особенно к визуальным; - для потоковой защиты использовать TInterlocked, TEvent или TSimpleEvent; - при большом объеме кода, расставлять проверки флага для выхода из цикла if ( Terminated ) break; - дожидаться корректного окончания работы потока.
  11. Rusland, вот обсуждение и код оттуда BroadcastReceiver:= TCSBroadcastReceiver.Create(nil); BroadcastReceiver.OnReceive:= BroadcastReceiverOnReceive; BroadcastReceiver.RegisterReceive; BroadcastReceiver.Add('android.intent.action.PHONE_STATE'); BroadcastReceiver.Add('android.intent.action.NEW_OUTGOING_CALL'); а если попробовать: BroadcastReceiver.Add('android.os.action.POWER_SAVE_MODE_CHANGED');
  12. в AndroidManifest.xml: <receiver android:name=".observers.PowerSaveModeReceiver"> <intent-filter> <action android:name="android.os.action.POWER_SAVE_MODE_CHANGED"/> </intent-filter> </receiver> и есть код на java: PowerSaveModeReceiver.java: public class PowerSaveModeReceiver extends BroadcastReceiver { @Override public void onReceive(final Context context, final Intent intent) { if (BuildConfig.DEV_LOGS) Log.d(this.getClass().getName(), String.format("onReceive(context = [%s], intent = [%s])", context, intent)); final PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); if (pm.isPowerSaveMode()) { // do something } else { // do some else } } }
  13. isPowerSaveMode() итак понятно, а с событием нет, кода нет. Intent that is broadcast when the state of PowerManager.IsPowerSaveMode changes. This broadcast is only sent to registered receivers.
  14. Надо копать PowerManager. Androidapi.JNI.PowerManager.pas https://developer.android.com/reference/android/os/PowerManager.html AcquireWakeLock и ReleaseWakeLock - оттуда использовал, управление режимом засыпания. что-то типа isPowerSaveMode(), но это по запросу, так чтобы событие, это надо ловить ACTION_POWER_SAVE_MODE_CHANGED
  15. В Seattle этот код работает, кроме строки: item.Description:=dua; видимо есть глобальная переменная dua? в общем обновляться без вариантов, ошибок много исправили и отладка лучше стала. можно еще попробовать заменить ListBox1.AddObject(item); на item.Parent := ListBox1;
  16. Обсуждение старое, но я столкнулся с той же ошибкой и через поиск пришел сюда. XE10, MySQL, FireDAC и удаленный сервер. Тыкал долго, нет коннекта и все тут. На localhost без проблем, на удаленный ни в какую. Потом попробовал скомпилировать - о чудо, есть коннект. Итого: не работает из среды, собранный проект работает.
  17. Исключение в OnCreate вываливает приложение в черный экран без сообщений об ошибках, и вообще нельзя там ничего делать с компонентами. Инициализация простых переменных и все, на выход. Все опыты проводить из интерфейса пользователя, по кнопкам или жестам. Если что-то нужно сразу после старта, то, как написал Rusland, использовать OnActivate / OnShow
  18. Было дело как-то на windows, использовал сторонний пакет с wms картами с hasp ключом разработчика, глюками и нежеланием жить полной жизнью с потоками. Функционал: в числе прочего, отрисовка слоев карт со всех основных wms серверов. Задача: подружить с потоками, не париться каждый раз с установками и настройками, ключ положить в сейф, забыть о нем и найти внутреннее спокойствие. Не мудрствуя лукаво, собрал пакет в консольное приложение, анонимный канал (Pipe), замена стандартного ввода\вывода и класс для простоты общения. Таким образом, в основном приложении есть класс, который запускает дочерний процесс с вышеуказанной библиотекой и через свой интерфейс запрашивает у него слои в виде массивов. Работает стабильно, внутреннее спокойствие стало ближе. Полагаю, что-то подобное, некий провайдер для работы с usb, со спецификой системы конечно, можно сделать на AndroidStudio и XCode. Через пжоу конечно, но если очень хочется и крупный проект на RadStudio...
  19. - картинки хранить в базе данных... - данные хранить в файловом хранилище... - синхронизировать БД SQLite на Андроид с СУБД видимо на сервере windows/linux с помощью приложения на десктопе видимо windows... а что так все время через пжоу? попроще вариантов нет? общая задача какая вначале была?
  20. Личное мнение, не претендующее на истину: Обращение к визуальному компоненту из потока - сразу не лучший выбор, можно синхронизировать или лочить, все равно будет громоздко и ненадежно. Если рисование занимает много времени - надо оптимизировать рисование, а не выносить в поток, ресурсы будут заняты в любом случае плюс время на синхронизацию. Поток не дает выигрыша в производительности, скорее наоборот. Потоки хороши при ожиданиях ввода вывода, или при диких расчетах чтобы пользователь не видел эффекта зависания. Загрузка из файла занимает не больше нескольких мсек., если это долго, то что мешает загрузить четыре png сразу при запуске. Отрисовка займет микросекунды - ради этого воротить срэды?
  21. FTDI подошли к делу на андроид стандартно - там java классы.
  22. В FMX все-таки единый кроссплатформенный интерфейс, и если он будет развиваться - это удобно, не надо под разные платформы допиливать после доработок. Конечно это будет неплохо смотреться в резюме: кодинг на нескольких языках, несколько сред разработки IDE, симбиозное ядро, схема использование шаблонов MVC... и т.д. В общем да, изящно.
×
×
  • Создать...