Данные, связанные с настройкой программы, обычно используют системный реестр или инициализационный файл имеющий расширение ini. В данной статье будет рассмотрим второй вариант.
Расположим на форме 3 компонента label (Имя, Организация, Число лицензий), 3 - Edit для ввода данных 2 компонента кнопок (сохранить, загрузить), и CheckBox1 (флажок активации).
Для работы необходимо добавить модуль IniFiles в раздел Uses -
uses IniFiles;
Теперь напишем код для кнопки сохранить -
procedure TForm1.Button1Click(Sender: TObject); var fini: TIniFile; begin fini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'init.ini'); fini.WriteString('NAME','NameFIO',Edit1.Text); fini.WriteString('NAME','NameOrg',Edit2.Text); fini.WriteString('LICENCIA','kolvo',Edit3.Text); fini.WriteBool('LICENCIA','aktirovan',CheckBox1.Checked); fini.Free; end;
fini - локальная переменную класса TIniFile она создается в первой строчке -
fini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'init.ini');
Строка в скобках задает положение и имя файла инициализации. Если написать просто 'init.ini' то файл инициализации будет расположен в системном каталоге Windows, например в C:\Windows. Или, используя функцию ExtractFilePath(Application.ExeName) в каталоге запущенной программы. При отсутствии файла инициализации он будет создан.
Далее мы сохраняем значения полей которые мы ввели. Для этого предназначены методы - WriteInteger (для целых чисел), WriteBool (- логических данных), WriteDate (для даты), WriteTime (- времени), WriteDateTime (- даты и времени), WriteString (- текста), WriteFloat (- вещественных чисел).
Общий вид этих методов -
WriteXXX(Раздел, Идентификатор, Значение);
При отсутствии указанных разделов и идентификаторов они создаются.
Ini файл является текстовым файлом. Давайте введем значения в нашу программу и нажмем на кнопку сохранить. У меня получилось -
[NAME]
NameFIO=Иванов
NameOrg=Завод
[LICENCIA]
kolvo=456
aktirovan=1
Единственно требует уточнения, что последняя запись равна 1. 1 в булевых выражениях может считаться - thrue, а 0 false.
Для считывания данных введем код для кнопки Загрузить.
procedure TForm1.Button2Click(Sender: TObject); var fini: TIniFile; begin fini := TIniFile.Create(ExtractFilePath(Application.ExeName)+ 'init.ini'); Edit1.Text := fini.ReadString('NAME','NameFIO',''); Edit2.Text := fini.ReadString('NAME','NameOrg',''); Edit3.Text := fini.ReadString('LICENCIA','kolvo',''); CheckBox1.Checked := fini.ReadBool('LICENCIA','aktirovan',true); fini.Free; end;
Для загрузки данных используем методы - ReadFloat, ReadString, ReadBool, ReadInteger, ReadDate, ReadTime и ReadDateTime.
Общий вид будет таким -
ReadXXX(Раздел, Идентификатор, Значение по умолчанию);
Итог: мы разобрали работу с файлом инициализации, что он из себя представляет и как работает.
СУПЕР! А я не смог и ломал голову как это сделать! Писало [Error] Unit1.pas(50): Incompatible types: ‘Integer’ and ‘TCaption’ ))
Легко, просто и красиво! Спасибо большое за статью – коротко и по сути.