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

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

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

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

  • Посещение

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

    9

Сообщения, опубликованные Камышев Александр

  1. Нет разрешения на редактирование файлов, где лежит файл базы? Можно попробовать поместить в общедоступные папки, documents, downloads.

    Разрабы в Google закручивают гайки, не дают писать на флешки и внешние накопители, ибо нечего, покупайте устройства с бОльшим объемом памяти на борту - они дороже.

  2. В теплом, ламповом CBuilder(Delphi) у CheckBox кроме Checked еще было поле State, которое при включенном AllowGrayed могло принимать значения cbUnchecked (не отмеченное), cbChecked (отмеченное ) и cbGrayed - третье состояние, неопределенное.

    В  FMX  я этого не нашел, неужто совсем зарезали? Есть что-то похожее?

  3. имхо, я бы на старте службы запустил цикл со 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> есть в дельфи, а в билдере нет служб андроид, хаха

  4. Есть надежные, быстрые библиотеки для шифрования на С, но похоже к Delphi их никак не включить в проект. 

    Казалось бы основное направление Rad Studio - объектный паскаль, однако же CBuilder принимает *.pas файлы, а Delphi сишные файлы игнорит.

    Если собрать Static Library c библиотекой на С, наверное Delphi его поймет?

    Попробовал... Delphi и lib не понимает... печаль

  5. Владельцам galaxy tab нужно не письма отправлять, а огнестойкую коробку и перчатки, что бы сложить его туда и забетонировать от греха подальше :D

    сори оффтоп

  6. из известных blowfish и ГОСТ 28147-89, у меня библиотеки на сях, вот тут обсуждают реализацию blowfish на object pascal http://www.sql.ru/forum/1192261/ishodnik-blowfish-ne-poymu-kak-s-nim-rabotat

    ГОСТ 28147-89 - алгоритм шифрования, принят к использованию в госструктурах, но это так, к слову

  7. Если до сих пор ленился разбираться с другими IDE, с чего бы теперь вдруг перестать лениться?:)

    Сидим плотно на rad studio и ждем вкусняшки, вроде поддержки линуха.

    А Си бросать никак нельзя, он велик и от него исходит сияние.

  8. В 08.08.2016 в 17:29, Kitty сказал:

    Раз упомянули про С++, то расстраивает эта дорожная карта:

    http://community.embarcadero.com/article/news/16418-product-roadmap-august-2016

    Опять идет лесом С++ Builder в плане создания сервисов для Андроид. :(

     

    3 минуты назад, Kitty сказал:

    Почему не хотят? В дорожной карте эмбаркадеро с С++ все нормально.

     

  9. Сам пользуюсь cbuilder по привычке, ленюсь разбираться с новой IDE, там немного другой интерфейс в qt. У нас в конторе есть qt-шник, он хвалит.

    Большой плюс - есть полноценная бесплатная некоммерческая версия, условно бесплатная.

  10. 33 минуты назад, Прикладной сказал:

    Т.е. вы советуете переходить на Дельфийский ?

    тогда уж соскакивать с rad studio на qt, если не хотят С++ поддерживать, там и линукс и андроид и библиотек куча

    до сих пор builder используется больше из-за старых проектов и наработок

  11. закрывается форма как обычно Form.Close(), если из потока TThread то нужен Synchronize,

    если этот поток создавала Indy то на С это будет TIdNotify::NotifyMethod с хедером #include "IdSync.hpp"

  12. внешний накопитель может быть защищен от записи, это будет ошибка да, еще при включенном режиме USB накопителя может не быть доступа

    папка Documents была создана при вызове SaveToFile у TStringList, когда я пытался эмулировать Вашу ситуацию на своем планшете, до того ее не было

    псс, а что еще живы программисты под DOS? :D  столько не живут...

  13. у меня на планшете есть SD, но GetSharedDocumentsPath указывает на папку Documents в корне somewhere inside internal storage :)

    и да, пока хотя бы одно приложение не обратится по этому пути, папки такой не будет, она появляется после первого обращения, точнее первой записи

  14. 1 час назад, Юрий Гусач сказал:

    в каталог Documents на внешнюю карту,

    Путь к каталогу получаю функцией System.IOUtils.TPath.GetSharedDocumentsPath.

    вот отсюда поподробней, почему GetSharedDocumentsPath указывает на внешнюю карту, это в настройках?

  15. только что сохранил и в 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.

     

  16. Пойдем простым логическим путем. Если файлы не видно - андроид не хочет их показывать, а чего бы ему их не показать, если не по причине прав доступа. 

    А зачем тебе жужжать если ты не пчела? :)

    Попробуй в GetSharedDownloadsPath сохранить, там должно быть видно.

  17. Если 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;
    	}

     

  18. привет, вот здесь http://fire-monkey.ru/topic/1927-сглаживание-при-рисовании-в-буфер-bitmap/?do=findComment&comment=10081

    я рисовал в буфер Bitmap и на OnPaint копировал на канву PaintBox с помощью Canvas->DrawBitmap. Все рисовалось и копировалось быстро без морганий, но так и не получилось сглаживать линии.

    В конце концов стал рисовать напрямую в канву PaintBox - заработало сглаживание, никаких тормозов и морганий.

    Основные требования: рисовать только в OnPaint, между BeginScene() и EndScene() и каждый раз полностью инициализировать все настройки канвы: Stroke, Kind, Dash Color и т.п. 

×
×
  • Создать...