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

masmat

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

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

  • Посещение

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

    1

Активность репутации

  1. Like
    masmat получил реакцию от Вадим Шавров в Обновление файла БД без перезапуска приложения   
    Под Android я делаю так. Вставляю изначально файл БД в Deploy.
    Потом вызываю при необходимости процедуру
    procedure TForm1.RefreshBD; { TODO -cKod : RefreshBD - обновление БД } var   PackageName: JString;   zip: TZipFile; begin      // Отключаемся от базы       FDConnection1.Connected := False;       // Получаем имя apk файла       PackageName := SharedActivityContext.getPackageResourcePath;       if TFile.Exists(JStringToString(PackageName)) then       begin         // Удаляем старый файл базы         TFile.Delete(TPath.GetHomePath + PathDelim + 'DBGK.db');         // Извлекаем новый файл базы         zip := TZipFile.Create;         zip.Open(JStringToString(PackageName), TZipMode.zmRead);         zip.Extract('assets/internal/DBGK.db', TPath.GetDocumentsPath, False);         zip.Close;         zip.free; end;   // Подключаемся к базе   FDConnection1.Connected := True; end;  
    Под iOS вставляю в ресурсы, потом вот так
     
    procedure TForm1.RefreshBD; { TODO -cKod : RefreshBD - обновление БД } begin      // Отключаемся от базы       FDConnection1.Connected := False;   if FindResource(0, 'res_bd', PChar(RT_RCDATA)) <> 0 then     rs_bd := TResourceStream.Create(0,'res_bd',PChar(RT_RCDATA));   if TFile.Exists(TPath.GetHomePath+PathDelim+'Documents'+PathDelim +'dbgkios.db') then     begin       TFile.Delete(TPath.GetHomePath+PathDelim+'Documents'+PathDelim +'dbgkios.db');       rs_bd.SaveToFile(TPath.GetHomePath+PathDelim+'Documents'+PathDelim +'dbgkios.db');     end   else     begin       rs_bd.SaveToFile(TPath.GetHomePath+PathDelim+'Documents'+PathDelim +'dbgkios.db');     end;   FDConnection1.Connected := True; end;
  2. Like
    masmat получил реакцию от Константин Паньков в Обновление файла БД без перезапуска приложения   
    При указанном мной способе, файл перезаписывается на УРА 
  3. Like
    masmat отреагировална #WAMACO в Как увеличить скорость отработки запроса SQL к базе SQLLite   
    ну не сильно минимизировать, а разумно оптимизировать!
  4. Like
    masmat отреагировална Vitaldj в Как увеличить скорость отработки запроса SQL к базе SQLLite   
    Попробуйте поставить на поле cat1 индекс типа NOCASE ASC
  5. Like
    masmat отреагировална Vitaldj в Как увеличить скорость отработки запроса SQL к базе SQLLite   
    отпишитесь о результате, просто стало интересно))
  6. Like
    masmat отреагировална haword в Как увеличить скорость отработки запроса SQL к базе SQLLite   
    табы лучше не использовать, вместо них использовать разные формы. табы жрут все время отрисовки ибо каждый элемент отрисовывается не зависимо от того активна влкдака или нет. 
  7. Like
    masmat отреагировална haword в Как увеличить скорость отработки запроса SQL к базе SQLLite   
    ну и еще где то Ярослав говорил что при создании можно прогрузить с начало все стили а потом уже форма быстрее будет грузится. 
  8. Like
    masmat отреагировална Andrey Efimov в Как увеличить скорость отработки запроса SQL к базе SQLLite   
    Попробуйте, как уже писали выше, использовать формы/фреймы. И ещё, как вариант, не создавать сразу все визуальные компоненты на вкладках, т.е. делать это только когда необходимо.
  9. Like
    masmat отреагировална krapotkin в Как увеличить скорость отработки запроса SQL к базе SQLLite   
    у меня фреймы отдельные создаются при переходе на конкретную вкладку
    на mainstream 1.3 GHz смарте под андроид времени на создание форм уходит совершенно незначительное кол-во
  10. Like
    masmat отреагировална sviat9440 в Как создать форму в потоке?   
    то то - же! Как ни пытался применять потоки, постоянно что-то да не работает... Ладно, если нельзя создать форму в потоке, то можно ли отрисовывать анимированный индикатор в потоке? 
  11. Like
    masmat отреагировална zekelive в Как создать форму в потоке?   
    Сам пытался простой код в потоке выполнять, у меня то программа вываливается. То ошибки не понятные какие-то. Что-то с потоками совсем ерунда какая-то в FMX.
  12. Like
    masmat отреагировална enatechno в Выгрузка/Загрузка картинки в Blob поле SQLLite под Android/iOS   
    когда-то делал так:
     
    aMStream := TMemoryStream.Create; // считываем в aMStream, потом записываем в параметр пишущего запроса: {$IF CompilerVersion >= 28} aQuery.Params[i].SetStream(aMStream, ftBlob, true); {$ELSE} aQuery.Params[i].LoadFromStream(aMStream, ftBlob, 0); {$ENDIF}
  13. Like
    masmat получил реакцию от ENERGY в Обновление файла БД без перезапуска приложения   
    Под Android я делаю так. Вставляю изначально файл БД в Deploy.
    Потом вызываю при необходимости процедуру
    procedure TForm1.RefreshBD; { TODO -cKod : RefreshBD - обновление БД } var   PackageName: JString;   zip: TZipFile; begin      // Отключаемся от базы       FDConnection1.Connected := False;       // Получаем имя apk файла       PackageName := SharedActivityContext.getPackageResourcePath;       if TFile.Exists(JStringToString(PackageName)) then       begin         // Удаляем старый файл базы         TFile.Delete(TPath.GetHomePath + PathDelim + 'DBGK.db');         // Извлекаем новый файл базы         zip := TZipFile.Create;         zip.Open(JStringToString(PackageName), TZipMode.zmRead);         zip.Extract('assets/internal/DBGK.db', TPath.GetDocumentsPath, False);         zip.Close;         zip.free; end;   // Подключаемся к базе   FDConnection1.Connected := True; end;  
    Под iOS вставляю в ресурсы, потом вот так
     
    procedure TForm1.RefreshBD; { TODO -cKod : RefreshBD - обновление БД } begin      // Отключаемся от базы       FDConnection1.Connected := False;   if FindResource(0, 'res_bd', PChar(RT_RCDATA)) <> 0 then     rs_bd := TResourceStream.Create(0,'res_bd',PChar(RT_RCDATA));   if TFile.Exists(TPath.GetHomePath+PathDelim+'Documents'+PathDelim +'dbgkios.db') then     begin       TFile.Delete(TPath.GetHomePath+PathDelim+'Documents'+PathDelim +'dbgkios.db');       rs_bd.SaveToFile(TPath.GetHomePath+PathDelim+'Documents'+PathDelim +'dbgkios.db');     end   else     begin       rs_bd.SaveToFile(TPath.GetHomePath+PathDelim+'Documents'+PathDelim +'dbgkios.db');     end;   FDConnection1.Connected := True; end;
  14. Like
    masmat отреагировална Andrey Efimov в Долгая загрузка формы   
    Из моего опыта: На скорость также влияет количество подключаемых юнитов, т.е. иногда бывает так, что вы кинули компонент на форму (среда автоматом подключает необходимые юниты), а потом передумали и удалили его, но среда не почистила список юнитов. Я лично наблюдал такую ситуацию, приложение тоже долго грузилось, когда вручную почистил список юнитов, всё встало на свои места.
  15. Like
    masmat отреагировална Rusland в [Android] [XE7] Какой компонент выбрать для карты?   
    Во-первых, сам компонент здесь ни при чем.
    Во-вторых, ограничение 1000 бесплатных запросов (а не сессий) в день касается Google Places API for Android, а не самого Google Maps Android API
    Пруфлинк https://developers.google.com/maps/pricing-and-plans/?hl=ru
  16. Like
    masmat отреагировална Brovin Yaroslav в Фоновое выполнение операции без "замораживания" отрисовки   
    Вся отрисовка выполняется в главном потоке приложения. Поэтому, если вы пытаетесь выполнить скачивание файла в основном потоке, то вся отрисовка приостановится до момента окончания вашей операции. Поэтому правило хорошего тона - это вынесение долгих операций (загрузка, ответ авторизации и тд) в отдельный поток. 
     
    Примерный код приведен ниже:
    1. Создаем отдельный поток, в котором вы будите скачивать файл (я поставил для эмуляции скачивания просто паузу на 5 секунд):
    type TMyTask = class (TThread) protected FOnTaskStarted: TThreadMethod; FOnTaskFinished: TThreadMethod; procedure DoStarted; procedure DoFinished; procedure Execute; override; public property OnTaskStarted: TThreadMethod read FOnTaskStarted write FOnTaskStarted; property OnTaskFinished: TThreadMethod read FOnTaskFinished write FOnTaskFinished; end; Реализация:
    { TMyTask } procedure TMyTask.DoFinished; begin if Assigned(OnTaskFinished) then OnTaskFinished; end; procedure TMyTask.DoStarted; begin if Assigned(OnTaskStarted) then OnTaskStarted; end; procedure TMyTask.Execute; begin Synchronize(DoStarted); try Sleep(5000); // Эмуляция выполнения 5 Секундной задачи finally Synchronize(DoFinished); end; end; Само использование такого потока будет следующим (в моем примере после выполнения операции, появится сообщение):
    TForm3 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private FMyTask: TMyTask; public procedure DoTaskStarted; // Callback, вызываемый в начале старта операции procedure DoTaskFinished; // Callback, вызываемый в конце выполнения операции. Аналог OnTerminate procedure StartMyTask; // Запуск задачи end; procedure TForm3.Button1Click(Sender: TObject); begin StartMyTask; end; procedure TForm3.DoTaskStarted; begin end; procedure TForm3.DoTaskFinished; begin ShowMessage('Выполнение задачи окончено'); end; procedure TForm3.StartMyTask; begin if FMyTask <> nil then begin FMyTasl.OnTaskStarted := nil; FMyTasl.OnTaskFinished := nil; FMyTask.Free; end; FMyTask := TMyTask.Create(True); FMyTask.OnTaskStarted := DoTaskStarted; FMyTask.OnTaskFinished := DoTaskFinished; FMyTask.Start; end; При таком подходе главный поток не будет блокироваться и будет корректно отрисовываться и работать.
  17. Like
    masmat отреагировална Brovin Yaroslav в Как открыть ссылку в стандартном браузере под iOS?   
    uses FMX.Helpers.iOS, iOSapi.Foundation function OpenURL(const AUrl: string): Boolean; var Url: NSURL; begin Url := TNSUrl.Wrap(TNSUrl.OCClass.URLWithString(NSStr(AUrl))); Result := SharedApplication.openUrl(Url); end;
  18. Like
    masmat отреагировална Равиль Зарипов (ZuBy) в Загрузка файлов из интернета   
    uses System.Threading; TTask.Run(procedure begin   Stream:=TMemoryStream.Create;   IdHTTP1.Get('http://devdelphi.ru/files/VK_APImodul.rar',Stream);   Stream.SaveToFile('C:\1.rar');   Stream.Free; end);
  19. Like
    masmat отреагировална alexbirukov в Ошибка SDK при сборке проекта XE8 + iOS 9.2   
    Мне кажется проблема в версии PAServer'a. Нужен скорее всего, минимум 17 версии, соответственно и студия нужна XE10. Я ещё на версии iOS 9.1 пытался компилировать и выполнять отладку на XE8.1, ничего не получалось. Пришлось перейти по этой причине на XE10, в которой не работал Kinvey.
  20. Like
    masmat отреагировална alexbirukov в Ошибки и косяки Delphi XE10 Seattle и xCode 7   
    Нашёл решение предыдущей проблемы.
     
    На iOS9 перенесённые проекты не запускаются, если в проекте имелся ImageList. Во время запуска приложения данный компонент вызывает несколько ошибок. Решение: либо удалить компонент, либо пересоздать его и заполнить по новой. Источник.
     
    Так же, с выходом iOS 9.1 возникла проблема загрузки приложений в Apple Store. Теперь для загрузке обязательно необходимо обновить xCode до версии 7.1 и SDK9.
     
    И вот теперь, обязательны ключи:
     
    41<key>NSAppTransportSecurity</key>
    42<dict>
    43
    44  <key>NSAllowsArbitraryLoads</key>
    45      <true/>
    46</dict>

    для работы приложений с http, иначе будет возникать ошибка.
  21. Like
    masmat отреагировална Brovin Yaroslav в Разработка для Windows Phone   
    Ничего не могу вам ответить. Поживем, увидим.
  22. Like
    masmat отреагировална Brovin Yaroslav в [TabControl] Почему свойство TabHeight не меняется в некоторых стилях?   
    Фиксация высоты вкладки зависит от стиля. Если в стиле "TabControlStyle" есть объект TabHeight, то считается, что высота вкладки будет равна значению TagFloat у этого объекта:

     
    Соответственно, если вы хотите снять фиксацию высоты вкладки, то из стиля нужно удалить этот объект.

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