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».