Topic: Расположение файла настроек

Использую созданную программу в сетевом режиме несколькими пользователями.
Эти пользователи не инсталлировали ПО себе на комп, а просто запускают exe файл, лежащий на сервере в сети.
При этом получается, что файл настроек они используют тот, который лежит в папке с exe файлом.
Т.е. один файл настроек на всех, что неправильно.
Можно ли в скрипте задать путь расположения файла настроек для каждого из пользователей отдельно?

2 (edited by sibprogsistem 2019-02-05 19:26:45)

Re: Расположение файла настроек

1.вариант - когда настройки находятся на каждом компьютере в конкретной папке

procedure Form1_OnShow (Sender: TObject; Action: string);
  ini:TInifile;
begin
ini:= TIniFile.Create(ExtractFilePath (ParamStr (0))+'c:\\setting\db.ini');
end;

2. вариант - в нем нужно получить в переменную имя пользователя а  файл ini будет использоваться в зависимости от имени пользователя

procedure Form1_OnShow (Sender: TObject; Action: string);
  ini:TInifile;
  user: string;
begin
ini:= TIniFile.Create(ExtractFilePath (ParamStr (0)) +'usersetting\'+user +'.ini');
end;

параметры считываем так:

form1.edit1:=ini.ReadString('секция', 'ключ', '(тут оставляем пустым)') 

сравниваем или проверяем так:

if ini.ReadString('секция', 'ключ', '(тут оставляем пустым)')='значение с которым сравниваем'

   
структура ini файла
[секция]
ключ = 1440
ключ = 900
[секция]
ключ = russian

Re: Расположение файла настроек

Я бы посоветовал хранить пользовательские параметры в базе. Я так понимаю, речь идет о настройке ширины колонок в табличном представлении данных? В любом случае, компьютер у пользователя может смениться, но если настройки хранятся в базе, то пользователь останется при своих настройках.

Визуальное программирование: блог и телеграм-канал.

Re: Расположение файла настроек

К сожалению нет под рукой локалки чтобы протестировать, но попробуйте такой метод

procedure Form1_OnShow (Sender: TObject; Action: string);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    reg.Access := KEY_ALL_ACCESS;
    reg.RootKey := HKEY_CURRENT_USER;
    if reg.OpenKey('Software\MyVisualDatabaseConfigs\'+ExtractFileName(Application.ExeName)+'\', True) then
      reg.WriteBool('SettingsInAppData', True);
  finally
    Reg.Free;
  end;
end;

Таким образом приложение должно будет сохранять свои настройки локально в папке, после повторного запуска
C:\Users\[USERNAMR]\AppData\Roaming\MyVisualDatabase\Configs\[EXENAME].exe\


Дайте знать результат.

Dmitry.

5 (edited by k245 2019-02-07 13:15:58)

Re: Расположение файла настроек

То же самое можно через стандартное меню "Инструменты - Настройка" сделать, не так ли?


http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=5046&download=0

Post's attachments

Attachment icon Настройка.png 22.5 kb, 145 downloads since 2019-02-07 

Визуальное программирование: блог и телеграм-канал.

Re: Расположение файла настроек

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

Dmitry.

Re: Расположение файла настроек

Скрипт с использованием ключа реестра не работает как надо.
Первый запуск программы с процедурой создания ключа реестра при открытии Form1 работает нормально.
Но, если закрыть приложение и открыть его снова, то программа перестает узнавать поля в базе данных!
У меня на Form1 расположены две таблицы.
У них есть фильтр (Flag_IsItTask = 0 OR Flag_IsItTask IS NULL)
Так вот при втором и последующих запусках программы возникает исключение MySQL "no such field Flag_IsItTask', после чего форма открывается с пустыми таблицами.
Думал, что БД полетела.
Но, у нее все нормально - такое поле никуда не пропало.
Проблема оказалась в  том, что хранение файлов настроек, как и было задано скриптом переключилось на C:\Users\[USERNAMR]\AppData\Roaming\MyVisualDatabase\Configs\[EXENAME].exe\
Файл настроек там создался, но он совсем пустой.
Пришлось через "Инструменты - Настройка" обратно вернуть указание на файл настроек в папке с программой.
Тогда перезапустив программу все таблицы открылись отображая как положено содержимое БД.
Т.е. если и создавать ключ скриптом для локального хранения настроек, то вместе с этим еще надо существующий файл настроек из папки программы перекладывать в локальное место?

Re: Расположение файла настроек

Скачайте пожалуйста последнюю бета версию
https://www.dropbox.com/s/mb8hyuevvu8x5 … a.zip?dl=0


Теперь файл с настройками должен переноситься автоматически.

Dmitry.