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

[Android] Что использовать для сохранения настроек приложения?


ildvild

Вопрос

Рекомендуемые сообщения

  • 0
  • Модераторы
5 минут назад, DimeDron сказал:

А как удалять этот файл после деинсталляции приложения?

Если писать в папку приложения TPath.GetDocumentsPath, то файлы автоматически удаляются при деинсталяции приложения

Ссылка на комментарий
  • 0
В 29.11.2016 в 15:21, ZuBy сказал:

Если писать в папку приложения TPath.GetDocumentsPath, то файлы автоматически удаляются при деинсталяции приложения

Действительно это так! Спасибо!

Но, есть проблема, почему-то в этот INI файл, расположенный в   TPath.GetDocumentsPath  я могу записать только один раз. Сколько бы я не пытался это сделать, после перезапуска приложения всегда одна и та же информация, которая была записана в первый раз. Подскажите в чем может быть проблема? Спасибо!

Ссылка на комментарий
  • 0
2 часа назад, ZuBy сказал:

покажите код с записью ini, явно там ошибка

Если я записываю INI файл в   TPath.GetSharedDownloadsPath, то такой проблемы не наблюдается.

Вот код первой записи:

procedure TFormELECTRA.FormCreate(Sender: TObject);
begin
  PathToSettings := TPath.GetSharedDownloadsPath;    //GetSharedDownloadsPath   GetDocumentsPath
end;

procedure TFormELECTRA.BtnAddUserClick(Sender: TObject);
begin
  F:=TIniFIle.Create(TPath.Combine(PathToSettings, INIFileName));
  F.WriteInteger('door1', 'number', 1); //записываем FDoorNumber
  F.WriteString('door1', 'doorname', FDoorName); //записываем FDoorName
  F.WriteString('door1', 'doorkey', FDoorKey); //записываем FDoorKey
  F.WriteString('door1', 'doorstatus', FDoorStatus); //записываем FDoorStatus
  F.WriteString('door1', 'lastopen', FDoorLastOpen); //записываем FDoorLastOpen
  F.WriteString('door1', 'accesstokeys', FDoorAccessToKeys); //записываем FDoorAccessToKeys
  F.UpdateFile; //обновляем файлик
  F.DisposeOf;
end;

Так я добавляю дополнительно одну из записей, таких у меня несколько процедур. 

procedure TFormELECTRA.WriteStatusLock;
  begin
    F:=TIniFIle.Create(TPath.Combine(PathToSettings, INIFileName));
    F.WriteString('door1', 'status', FDoorStatus); //записываем FDoorStatus
    F.WriteString('door1', 'accesstokeys', FDoorAccessToKeys); //записываем FDoorAccessToKeys
    if FDoorLastOpen <> '' then
      begin
        F.WriteString('door1', 'lastopen', FDoorLastOpen); //записываем FDoorLastOpen          
      end;
    TimeFromMobile := DateTimeToStr(Now);
    F.WriteString('parameters', 'Tl', TimeFromLock); //записываем TimeFromLock
    F.WriteString('parameters', 'Tm', TimeFromMobile); //записываем TimeFromMobile
    F.UpdateFile; //обновляем файлик
    F.DisposeOf;
  end;

 

Ссылка на комментарий
  • 0

Если приложение использует FireDac, то мне нравится использовать SQLiteIniFile

Лежит здесь:

C:\Users\Public\Documents\Embarcadero\Studio\18.0\Samples\Object Pascal\Database\FireDAC\Samples\AddOn\SQLiteIniFile\FireDAC.Phys.SQLiteIniFile.pas

Это обертка вокруг ini файла с хранением в базе данных. Подходит для больших объемов и можно применять шифрование SQLite. 

На Androide прекрасно работает

   WorkFolder := TPath.GetDocumentsPath;
   Options := TOptions.create(TPath.Combine(WorkFolder, 'Options.db'));
//TOptions это наследник TSQliteIniFile

 

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...