-
Постов
75 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Активность репутации
-
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; -
masmat получил реакцию от Константин Паньков в Обновление файла БД без перезапуска приложения
При указанном мной способе, файл перезаписывается на УРА
-
masmat отреагировална #WAMACO в Как увеличить скорость отработки запроса SQL к базе SQLLite
ну не сильно минимизировать, а разумно оптимизировать!
-
masmat отреагировална Vitaldj в Как увеличить скорость отработки запроса SQL к базе SQLLite
Попробуйте поставить на поле cat1 индекс типа NOCASE ASC
-
masmat отреагировална Vitaldj в Как увеличить скорость отработки запроса SQL к базе SQLLite
отпишитесь о результате, просто стало интересно))
-
masmat отреагировална haword в Как увеличить скорость отработки запроса SQL к базе SQLLite
табы лучше не использовать, вместо них использовать разные формы. табы жрут все время отрисовки ибо каждый элемент отрисовывается не зависимо от того активна влкдака или нет.
-
masmat отреагировална haword в Как увеличить скорость отработки запроса SQL к базе SQLLite
ну и еще где то Ярослав говорил что при создании можно прогрузить с начало все стили а потом уже форма быстрее будет грузится.
-
masmat отреагировална Andrey Efimov в Как увеличить скорость отработки запроса SQL к базе SQLLite
Попробуйте, как уже писали выше, использовать формы/фреймы. И ещё, как вариант, не создавать сразу все визуальные компоненты на вкладках, т.е. делать это только когда необходимо.
-
masmat отреагировална krapotkin в Как увеличить скорость отработки запроса SQL к базе SQLLite
у меня фреймы отдельные создаются при переходе на конкретную вкладку
на mainstream 1.3 GHz смарте под андроид времени на создание форм уходит совершенно незначительное кол-во
-
masmat отреагировална sviat9440 в Как создать форму в потоке?
то то - же! Как ни пытался применять потоки, постоянно что-то да не работает... Ладно, если нельзя создать форму в потоке, то можно ли отрисовывать анимированный индикатор в потоке?
-
masmat отреагировална zekelive в Как создать форму в потоке?
Сам пытался простой код в потоке выполнять, у меня то программа вываливается. То ошибки не понятные какие-то. Что-то с потоками совсем ерунда какая-то в FMX.
-
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} -
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; -
masmat отреагировална Andrey Efimov в Долгая загрузка формы
Из моего опыта: На скорость также влияет количество подключаемых юнитов, т.е. иногда бывает так, что вы кинули компонент на форму (среда автоматом подключает необходимые юниты), а потом передумали и удалили его, но среда не почистила список юнитов. Я лично наблюдал такую ситуацию, приложение тоже долго грузилось, когда вручную почистил список юнитов, всё встало на свои места.
-
masmat отреагировална Rusland в [Android] [XE7] Какой компонент выбрать для карты?
Во-первых, сам компонент здесь ни при чем.
Во-вторых, ограничение 1000 бесплатных запросов (а не сессий) в день касается Google Places API for Android, а не самого Google Maps Android API
Пруфлинк https://developers.google.com/maps/pricing-and-plans/?hl=ru
-
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; При таком подходе главный поток не будет блокироваться и будет корректно отрисовываться и работать.
-
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; -
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); -
masmat отреагировална alexbirukov в Ошибка SDK при сборке проекта XE8 + iOS 9.2
Мне кажется проблема в версии PAServer'a. Нужен скорее всего, минимум 17 версии, соответственно и студия нужна XE10. Я ещё на версии iOS 9.1 пытался компилировать и выполнять отладку на XE8.1, ничего не получалось. Пришлось перейти по этой причине на XE10, в которой не работал Kinvey.
-
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, иначе будет возникать ошибка.
-
masmat отреагировална Brovin Yaroslav в Разработка для Windows Phone
Ничего не могу вам ответить. Поживем, увидим.
-
masmat отреагировална Brovin Yaroslav в [TabControl] Почему свойство TabHeight не меняется в некоторых стилях?
Фиксация высоты вкладки зависит от стиля. Если в стиле "TabControlStyle" есть объект TabHeight, то считается, что высота вкладки будет равна значению TagFloat у этого объекта:
Соответственно, если вы хотите снять фиксацию высоты вкладки, то из стиля нужно удалить этот объект.