Для Delphi есть огромное количество модулей, как от разработчиков, так и от энтузиастов написавших их и выложивших в сеть. Сегодня рассмотрим стандартный, идущий в комплекте с Delphi, модуль - inifiles.
Для начала - что же такое .ini файлы? Это файлы, чаще всего применяющиеся для сохранения настроек или параметров программы. Например, ты выбрал определённую папку в программе-плеере, где будет хранится музыка. Эта папка записывается в .ini файл. После чего программа, независимо от того, была ли она перезапущена, прочитает эту настройку и выполнит её. Если мы не запишем куда-либо эту настройку, то после перезапуска придётся выбирать файл заново. Как уже понятно, файл имеет расширение .ini и обычно хранится возле программы или в каталоге, куда она установлена. INI файлы мы можем видеть почти у любой программы, которая учитывает индивидуальные настройки пользователя.
Выглядит код в ini - файле примерно так:
[file]
directory_root=C:\Users
file_size=100
[settings]
sleep=100
Можно всё поделить на 2 блока:
1) Секция (
, [settings])
2) Параметры группы = значения группы
Так в секции [file] я записал рутовую дирректорию и размер файла. А в секции settings настройки, такие как задержка программы при каком - либо действии (для примера). Так же в ini-файлах можно хранить параметры окон, параметры визуальных элементов, различные каталоги и пути, ссылки и прочее.
Как сказано выше, модуль, предназначенный для работы с ini файлами - это модуль inifiles.
Перед началом работы, конечно же, нужно создать и инициализировать переменную, которая будет писать/читать в ini - файлы. Для этого используем метод .Create:
[DELPHI]var ini: TiniFile;
begin
ini:= TiniFile.Create('путь');
end;
В параметре метода передаётся путь до .ini файла. Например
ini:= TiniFile.Create('C:\INIFILES\myfile.ini');
Пишем строку в файл с помощью процедуры
WriteString(const Section, Ident, Value: string);
Где section - имя секции, Ident - название поля, Value - значение, передаваемое полю. Пример использования:
var dir: String;
begin
ini.WriteString('file','directory_root',dir);
end;
Аналогично пишется и число, разница лишь в типе параметров и названии процедуры -
WriteInteger(const Section, Ident: string; Value: Longint);
Читаем значения из файла с помощью похожих функций:
ReadString(Section, ident, Value: string): string;
ReadInteger(Section, ident: string Value: longint): longint;
Что бы удалить параметр, существует процедура
Deletekey(const Section, Ident: string);
Найти файл можно с помощью функции:
function ValueExists(const Section, Ident: String): Boolean;
Пример использования:
function searchfile: string;
file_settings: File;
dir: string;
begin
path_ini:= ExtractFileDir(Application.ExeName)+'settings.ini';
{создаём файл}
AssignFile(file_settings, path_ini);
Rewrite(file_settings);
CloseFile(file_settings);
ini:= TIniFile.Create(path_ini); //Инициализация
SelectDirectory ('Выберите папку для сохранения чего-либо', 'C:\', dir);
ini.WriteString('file','directory_root',dir); // INI : пишем имя дирректории для изображений
Result:= dir;
end;
Пример, кстати говоря, из будующего проекта, по всё тому же vk api :)
Спасибо за внимание.