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

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

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

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

  • Посещение

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

    9

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

  1. Нет разрешения на редактирование файлов, где лежит файл базы? Можно попробовать поместить в общедоступные папки, documents, downloads. Разрабы в Google закручивают гайки, не дают писать на флешки и внешние накопители, ибо нечего, покупайте устройства с бОльшим объемом памяти на борту - они дороже.
  2. про ImeMode пишут в мануале: For internal use only Do not use this property. It is for internal use only.
  3. ImeMode отправить в imDisable, ловить LongTap и врукопашную выделить сколько нужно SelStart и SelLength
  4. В теплом, ламповом CBuilder(Delphi) у CheckBox кроме Checked еще было поле State, которое при включенном AllowGrayed могло принимать значения cbUnchecked (не отмеченное), cbChecked (отмеченное ) и cbGrayed - третье состояние, неопределенное. В FMX я этого не нашел, неужто совсем зарезали? Есть что-то похожее?
  5. TCriticalSection кроссплатформенный, Enter(), Leave(), все как в CRITICAL_SECTION, только инициализировать не надо.
  6. нету clock() в Delphi, сишный эксклюзив, только GetTickCount в TThread... с другой стороны зачем такая точность, clock() возвращает тики процессора, тут достаточно системное время запросить
  7. имхо, я бы на старте службы запустил цикл со Sleep(10) и проверял сколько прошло времени вот этим кодом: class MyTimer { private: clock_t startTicks; double coef; public: MyTimer(){ coef = 1000.0f / CLOCKS_PER_SEC; } void Start() { startTicks = clock(); } float GetTimeSec(){ return ( clock() - startTicks ) * coef / 1000.0f; } float GetTimeMSec(){ return ( clock() - startTicks ) * coef; } }; работает на винде и андроид, что-то типа: MyTimer Timer; Timer.Start(); while(true) { if ( flag_exit ) break; if ( Timer.GetTimeSec() < 15 ) { // что-то делаем в режиме ожидания Sleep(10); } // что-то делаем по таймеру Timer.Start(); } код на си, но все функции есть в объект-паскале, думаю алгоритм понятен хотя не факт что #include <time.h> есть в дельфи, а в билдере нет служб андроид, хаха
  8. Есть надежные, быстрые библиотеки для шифрования на С, но похоже к Delphi их никак не включить в проект. Казалось бы основное направление Rad Studio - объектный паскаль, однако же CBuilder принимает *.pas файлы, а Delphi сишные файлы игнорит. Если собрать Static Library c библиотекой на С, наверное Delphi его поймет? Попробовал... Delphi и lib не понимает... печаль
  9. Владельцам galaxy tab нужно не письма отправлять, а огнестойкую коробку и перчатки, что бы сложить его туда и забетонировать от греха подальше сори оффтоп
  10. из известных blowfish и ГОСТ 28147-89, у меня библиотеки на сях, вот тут обсуждают реализацию blowfish на object pascal http://www.sql.ru/forum/1192261/ishodnik-blowfish-ne-poymu-kak-s-nim-rabotat ГОСТ 28147-89 - алгоритм шифрования, принят к использованию в госструктурах, но это так, к слову
  11. Если до сих пор ленился разбираться с другими IDE, с чего бы теперь вдруг перестать лениться? Сидим плотно на rad studio и ждем вкусняшки, вроде поддержки линуха. А Си бросать никак нельзя, он велик и от него исходит сияние.
  12. Сам пользуюсь cbuilder по привычке, ленюсь разбираться с новой IDE, там немного другой интерфейс в qt. У нас в конторе есть qt-шник, он хвалит. Большой плюс - есть полноценная бесплатная некоммерческая версия, условно бесплатная.
  13. тогда уж соскакивать с rad studio на qt, если не хотят С++ поддерживать, там и линукс и андроид и библиотек куча до сих пор builder используется больше из-за старых проектов и наработок
  14. закрывается форма как обычно Form.Close(), если из потока TThread то нужен Synchronize, если этот поток создавала Indy то на С это будет TIdNotify::NotifyMethod с хедером #include "IdSync.hpp"
  15. внешний накопитель может быть защищен от записи, это будет ошибка да, еще при включенном режиме USB накопителя может не быть доступа папка Documents была создана при вызове SaveToFile у TStringList, когда я пытался эмулировать Вашу ситуацию на своем планшете, до того ее не было псс, а что еще живы программисты под DOS? столько не живут...
  16. у меня на планшете есть SD, но GetSharedDocumentsPath указывает на папку Documents в корне somewhere inside internal storage и да, пока хотя бы одно приложение не обратится по этому пути, папки такой не будет, она появляется после первого обращения, точнее первой записи
  17. вот отсюда поподробней, почему GetSharedDocumentsPath указывает на внешнюю карту, это в настройках?
  18. видимо особенности аппарата, в вопросе пишите сразу какое железо и можно сразу версию андроид
  19. только что сохранил и в GetSharedDownloadsPath() и в GetSharedDocumentsPath(), и там и там все доступно для чтения из USB накопителя и в описании разница небольшая: Returns the path to the directory where user stores shared downloaded files. Returns the path to the directory where documents shared between users are stored.
  20. Пойдем простым логическим путем. Если файлы не видно - андроид не хочет их показывать, а чего бы ему их не показать, если не по причине прав доступа. А зачем тебе жужжать если ты не пчела? Попробуй в GetSharedDownloadsPath сохранить, там должно быть видно.
  21. Если VCL там есть DBGrid, MyDataSource указать, все само отрисуется. В FMX по сути тоже должен быть способ, типа LiveBindings. Можно рисовать в рукопашную for ( int i = 0; i < fquery->RecordCount; i++ ) { // пройти по записям fquery->RecNo = i + 1; // получить массив данных TByteDynArray da = fquery->Fields->FieldByNumber(0)->AsBytes; // скопировать массив в Stream, // возможно есть другие способы скопировать TByteDynArray в TStream, я на вскидку скопировал побайтно TMemoryStream *ms = new TMemoryStream; ms->SetSize( da.Length ); // занять область под копирование char *ms_data = (char*)ms->Memory; // именованый указатель на область память for( int j = 0; j < da.Length; i++ ) char[i] = da[i]; // копирование побайтно в цикле TBitmap *b = new TBitmap; b->LoadFromStream( ms ); // здесь в битмап уже должно быть изображение delete ms; delete b; }
  22. привет, вот здесь http://fire-monkey.ru/topic/1927-сглаживание-при-рисовании-в-буфер-bitmap/?do=findComment&comment=10081 я рисовал в буфер Bitmap и на OnPaint копировал на канву PaintBox с помощью Canvas->DrawBitmap. Все рисовалось и копировалось быстро без морганий, но так и не получилось сглаживать линии. В конце концов стал рисовать напрямую в канву PaintBox - заработало сглаживание, никаких тормозов и морганий. Основные требования: рисовать только в OnPaint, между BeginScene() и EndScene() и каждый раз полностью инициализировать все настройки канвы: Stroke, Kind, Dash Color и т.п.
×
×
  • Создать...