Ini-файл – это текстовый файл, в котором информация сгруппирована по секциям, ключам. Данные файлы широко применяются во многих приложениях и в операционной системе Windows для хранения различных программных данных и настроек пользователя. В таком файле можно хранить, например, положение окон программы, дату, время и продолжительность работы программы, пути к разным данным и данным, выбранные в программе настройки пользователя Ниже приведена структура и пример Ini-файла:
Для работы с Ini-файлами применяется дополнительный модуль Delhi «inifiles». Ссылку на данный модуль необходимо прописать в разделе «uses» работающей с Ini-файлами форме программы. Вся работа с Ini-файлами осуществляется через тип «TiniFile» модуля «inifiles». Основные методы данного типа следующие:
Create | Открытие Ini-файла для чтения или записи |
Free | Закрытие открытого Ini-файла |
UpdateFile | Обновляет данные из/в файла на диске |
| |
SectionExists | Проверка существования в файле данной секции |
ValueExists | Проверка существования в файле ключа в данной секции |
ReadSections | Получение перечня всех секций файла |
EraseSection | Удаление данной секции со всеми ее ключами |
DeleteKey | Удаление ключа в данной секции |
ReadSection | Получение перечня ключей данной секции |
ReadSectionValues | Получение значений всех ключей (с именами) данной секции |
| |
ReadString | Чтение строкового значения из ключа данной секции |
ReadBool | Чтение логического значения из ключа данной секции |
ReadDate | Чтение даты из ключа данной секции |
ReadDateTime | Чтение даты и время из ключа данной секции |
ReadFloat | Чтение вещественного значения из ключа данной секции |
ReadInteger | Чтение целого значения из ключа данной секции |
ReadTime | Чтение времени из ключа данной секции |
| |
WriteString | Запись (обновление) строкового значения в ключ данной секции |
WriteBool | Запись логического значения в ключ данной секции |
WriteDate | Запись даты в ключ данной секции |
WriteDateTime | Запись даты и времени в ключ данной секции |
WriteFloat | Запись вещественного значения в ключ данной секции |
WriteInteger | Запись целого значения в ключ данной секции |
WriteTime | Запись времени в ключ данной секции |
Рассмотрим на подробном примере процедуру записи информации в Ini-файл:
procedure TForm1.Button3Click(Sender: TObject);
var t_Ini: TIniFile;
k: integer; s, path_pr, nfile: string; td: tdatetime;
begin
k:=736; s:='Okey'; td:=now;
path_pr:=ExtractFilePath(application.exename) +'tsn.ini';
t_Ini := TIniFile.Create(nfile);
try
with t_Ini do begin
WriteInteger('TSN', 'str1', k);
WriteFloat('TSN', 'str2', 736.123);
WriteString('TSN', 'str3', s);
WriteDate('TSN', 'str4', strtodate('01.02.2012'));
WriteTime('TSN', 'str5', td);
Writebool('TSN', 'str6', true);
end;
except
showmessage('Нет доступа к Ini-файлу !');
end;
t_Ini.Updatefile; t_Ini.Free;
end;
Рассмотрим на примере процедуру считывания ранее сохраненной информации из Ini-файла:
procedure TForm1.Button4Click(Sender: TObject);
var t_Ini: TIniFile;
k: integer; s, path_pr, nfile: string; td: tdatetime;
begin
path_pr:=ExtractFilePath(application.exename) +'tsn.ini';
t_Ini := TIniFile.Create(nfile);
try
with t_Ini do begin
k:=ReadInteger('TSN', 'str1', -1); showmessage(inttostr(k));
s:=ReadString('TSN', 'str3', '-1'); showmessage(s);
td:=ReadDate('TSN', 'str4', strtodate('1.1.2000'));
showmessage(datetostr(td));
showmessage(floattostr(ReadFloat('TSN', 'str2', -1.123)));
showmessage(timetostr(ReadTime('TSN2', 'str5', now)));
showmessage(inttostr(byte(ReadBool('TSN2', 'str6', false))));
end;
except
showmessage('Нет доступа к Ini-файлу !');
end;
t_Ini.Free;
end;