Перейти к содержанию
  • Регистрация
  • 0
shershen

Где хранить настройки?

Вопрос

Где хранить инишник с настройками программы? Выбираю из "/Users/<username>/Library" и "/Users/<username>/Library/Application Support", встречаются разные мнения

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

  • 0

А разве это кошерно? А для разных юзеров?

Понятно, что для разных юзеров, в случае хранения настроек как я предложил, немного сложнее реализовать все как надо. Но с другой стороны, лично я очень не люблю программы, которые своими файлами засир... засоряют всю систему, а потом при удалении программы не убирают их за собой. Поэтому сам стараюсь делать программу так, чтобы удалить ее было как можно проще. Вплоть до простого удаления папки с программой. В общем, все свое ношу с собой, так сказать :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Ну под Windows и MacOS можно типа так:

function GetMyINIPath(const ASubdir: string = ''): string;
begin
  try
    if ASubdir = '' then
    Result :=
      IncludeTrailingPathDelimiter({$IFDEF MACOS}'/Users/Shared/'{$ELSE}GetHomePath{$ENDIF}) +
      ChangeFileExt(ExtractFileName(ParamStr(0)), '')
    else
    Result :=
    IncludeTrailingPathDelimiter({$IFDEF MACOS}'/Users/Shared/'{$ELSE}GetHomePath{$ENDIF}) +
      ChangeFileExt(ExtractFileName(ParamStr(0)), '') + PathDelim + ASubdir;
    if not DirectoryExists(Result) then
      ForceDirectories(Result);
  except
    Result := '';
  end;
end;

А использовать, соответственно, так:

TPath.Combine(GetMyINIPath, _ваш_файл_);

А под Android, например, еще проще можно:

TPath.Combine(TPath.GetDocumentsPath, _ваш_файл_);

Может не слишком "красиво", но работать все должно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

А в папке рядом с исполняемым файлом разве нельзя хранить?

Такая программа зарежется на постпродакшене: что на Win, что на OSX

Это только если писать софт "для себя". Ну либо если из ini данные только считываются, что не имеет смысла)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Может я чего то не знаю... Почему "зарежется"? Что преступного в том, что настройки лежат рядом с исполняемым файлом (хоть читать, хоть писать ini файл)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Запись, например в виндовые program files, запрещена для не админа. В osx аналогично. Это уже несколько оффтоп и на эту тему масса информации в интернете. (UAC, права,и.т.д..)

 

Для osx я уже выше написал что делать, для виндоса же можно использовать GetSpecialFolderPath()

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Можно использовать класс TUserInifile из модуля Apple.Inifiles, который был в XE4 если не ошибаюсь. Он хранит настройки персонально для каждого пользователя в plist-ах (в ~/Library/Preferences) используя класс NSUserDefaults

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

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


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

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

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