RSS
 

 

Как сохранять настройки программы в INI файл?

11 Янв


Программируя пользовательские интерфейсы часто необходимо запоминать какие-то значения и восстанавливать их, когда программа запустится в следующий раз. Кроме реестра можно сохранять настройки и в INI(конфигурационные файлы).
Как сохранять настройки программы в INI файл?

В предыдущей заметке я писал о том, как сохранять и восстанавливать значения из реестра Windows, однако можно сохранять все и в файлах INI

В Delphi есть простой и чудесный модуль inifiles и замечательный класс TIniFile для работы с INI файлами.

Для этих целей я написал и использую пару функций SaveParamsIni и RestoreParamsIni.

Вот вариант моей реализации этих функций:

unit ZFunctions;
interface
uses
   ... IniFiles, variants, ...
...
const
 IniDefSection = 'Options';
...
function SaveParamsIni(
     IniFile,Section,KeyName : string; 
     Value : variant) : Boolean;
function RestoreParamsIni(
     IniFile,Section,KeyName : string; 
     DefaultValue : variant):variant;
...
implementation
...
function SaveParamsIni(
      IniFile,Section,KeyName : string; 
      Value : variant) : Boolean;
var
  fINI: TIniFile;
begin
  if Section = '' then Section := IniDefSection;
  Result := false;
  fINI := Tinifile.Create(extractfilepath(Application.ExeName) + IniFile);
  try
   fINI.WriteString(Section, KeyName, Value);
   Result := True;
  finally
   FreeAndNil(fINI);
  end;
end;
 
function RestoreParamsIni(
      IniFile,Section,KeyName : string; 
      DefaultValue : variant):variant;
var
  fINI: TIniFile;
begin
  if Section = '' then Section := IniDefSection;
  Result := DefaultValue;
  fINI := Tinifile.Create(extractfilepath(Application.ExeName) + IniFile);
  try
   Result := fINI.ReadString(Section, KeyName, DefaultValue);
  finally
   FreeAndNil(fINI);
  end;
end;
...

Вызов этих функций похож на вызов моих функций для работы с реестром из предыдущей статьи.

IniFile - Имя файл настроек, он будет автоматически создан если его нет рядом с исполняемым файлом (Я считаю что все, что создает программа должно хранится рядом с ней или в каталогах, рядом с основным запускающим модулем программы).

Section - Имя секции в которой будут сохранятся или из которой будут считывается значения ключей KeyName.

Если вы передадите в функции параметр Section пустой (′′) он автоматически заменится на 'Options'
Изменить значении секции по умолчанию можно изменив значение константы IniDefSection.