INI-файлы являются прекрасным способом сохранения какой-либо служебной информации в разрабатываемых приложениях. Конечно это не единственный способ. Информацию можно хранить в реестре Windows или вообще в базе данных. Но иногда базы данных не подходят для хранения определенного рода информации.
Примером может послужить параметры подключения программы к базе данных. Эти вещи, как вы понимаете, не имеет смысла хранить в базе данных, потому что к ней еще нужно подключиться. Поэтому здесь остается разумным хранить служебную информацию либо в системном реестре Windows, либо в файлах INI.
Структура INI-файла
Структура файла INI проста и ниже приведен простой пример:
[ORG] NameOrg=ООО "Атомспецсервис" FIORuk=Иванков Алексей Иванович DolRuk=Директор UrAdres=г.о. город Волгодонск, г. Волгодонск, ул. 8-я Заводская, д. 9 Telefon=+7 (8639) 230-390 Website=http://www.atomspetsservice.ru/contacts/ [DB] Driver=MySQL ODBC 8.0 Unicode Driver Server=localhost Port=3306 User=root Password=1234
Информацию в таком файле удобно хранить по секциям. Это ведь обычный текстовый файл, только с расширением .ini. Как видите из примера я в файле INI сделал две секции. В секции [ORG] я храню информацию об организации, а в секции [DB] я с охраняю информацию о подключении приложения к базе данных.
Слева, до знака равенства указывается название параметра, который будет храниться в нашем INI-файле, а справа от знака равенства — его значение.
Запись данных в INI-файл
Давайте теперь посмотрим как можно записать данные в INI-файл с помощью Delphi. Первое, что мы сделаем -это включим в секцию uses модуль работы INI-файлами под названием Inifiles.
Delphi — это объектно-ориентированный язык программирования и работа с INI-файлами осуществляется с помощью объектов. Для этого объявляется объектная переменная. Давайте назовем ее iniF, а наш INI-файл, в который мы будем записывать информацию назовем Config.ini.
procedure TfrmConnection.cmdPostClick(Sender: TObject);
var
iniF: TIniFile;//Объявим объектную переменную
begin
//Записываем настройки в Конфиг.
//Для этого создаем наш объект, подключив его к существующему ini-файлу.
iniF:=TiniFile.Create(sTekPapka+'\Config.ini');
//После этого записываем в файл Конфиг любые значения. Мы же запишем из полей формы (выдуманной).
//Запись означает, что в секцию "DB" в параметр "Driver" записывается текст, содержащийся в
//текстовом поле txtDriver нашей выдуманной формы.
iniF.WriteString('DB', 'Driver',txtDriver.text);
//И так далее по аналогии со всеми остальными параметрами.
iniF.WriteString('DB', 'Server',txtServer.text);
iniF.WriteString('DB', 'Port',txtPort.text);
iniF.WriteString('DB', 'User',txtUser.text);
iniF.WriteString('DB', 'Password',txtPassword.text);
iniF.WriteString('ORG', 'NameOrg',txtORG.text);
iniF.WriteString('ORG', 'FIORuk',txtFIO.text);
//Все параметры представленного в примере файла Config.ini перечислять не буду.
//Они записываются по аналогии с показанными.
iniF.free;//Уничтожаем объект INI из памяти.
ShowMessage('Данные успешно записаны в Config.ini!');
end;
Ну и конечно, применяя конструкции языка Delphi представленный код можно визуально упростить:
procedure TfrmConnection.cmdPostClick(Sender: TObject);
var
iniF: TIniFile;
begin
iniF:=TiniFile.Create(sTekPapka+'\Config.ini');
with iniF do
begin
WriteString('DB', 'Driver',txtDriver.text);
WriteString('DB', 'Server',txtServer.text);
WriteString('DB', 'Port',txtPort.text);
WriteString('DB', 'User',txtUser.text);
WriteString('DB', 'Password',txtPassword.text);
WriteString('ORG', 'NameOrg',txtORG.text);
WriteString('ORG', 'FIORuk',txtFIO.text);
free;
end;
ShowMessage('Данные успешно записаны в Config.ini!');
end;
Вот так легко можно сохранить данных в файла Config.ini, используя Delphi.
Чтение данных из INI-файла
Давайте теперь посмотрим, как произвести чтение из файла INI.
procedure TfrmConnection.FormCreate(Sender: TObject);
var
iniF: TIniFile;
begin
frmMDI.mnuConnection.Enabled:=false;
iniF:=TiniFile.Create(sTekPapka+'\Config.ini');
//Считываем содержимое файла Конфиг и заносим значения в поля формы
txtDriver.Text:=iniF.ReadString('DB', 'Driver','');
txtServer.Text:=iniF.ReadString('DB', 'Server','');
txtPort.Text:=iniF.ReadString('DB', 'Port','');
txtUser.Text:=iniF.ReadString('DB', 'User','');
txtPassword.Text:=iniF.ReadString('DB', 'Password','');
txtORG.Text:=iniF.ReadString('ORG', 'NameOrg','');
txtFIORuk.Text:=iniF.ReadString('ORG', 'FIORuk','');
iniF.free;
end;
Указанные процедуры удобно применять, например, при настройке подключения к базе данных. Пример применения кода можно найти в статьях «Подключение к базе данных в Delphi» и «Подключение к MySQL с помощью FireDAC».




































