Вихідні тексти delphi

Урок Delphi - Вчимося підключати .INI файли в свої Delphi-додатки.

<название параметра> = <его значение>

Працювати з .INI файлами в Delphi дуже просто. Основний базовий клас для роботи з ними це TIniFile. який дозволяє виробляти над ними всі операції запису і зчитування, перезапису налаштувань. Є ще клас TMemIniFile. який відрізняється і першого TIniFile, тим, що всі дані записуються в оперативну пам'ять комп'ютера, і зберігаються на диску тільки в момент виклику UpdateFile методу. Обидва ці класу міститися в модулі IniFile і для того, щоб ми змогли використати .INI файли і працювати з цими класами в ваших додатках, ви повинні додати модуль IniFiles в секцію Uses.







Створити об'єкт класу TIniFile або TMemIniFile дуже просто, для цього потрібно передати конструктору ім'я .INI файлу. У разі, якщо цього файлу не існує, він створюється автоматично. Для читання / запису з / в .INI файл призначених для користувача значень програмно існують методи

Досить теорії, тепер спробуємо попрактикуватися і написати невеликий додаток, що наочно демонструє роботу з ініціалізації файл в Delphi і класом TIniFile. Наше додаток після запуску вважає з .INI файлу інформацію про стан і розмірах вікна, а так само вмісту поля введення типу Edit, а коли ми закриємо додаток воно знову запише в .INI файл свої нові (якщо ми поміняли розмір вікна або щось написали в поле вводу) дані, з якими воно відкриється в наступний раз.

Відкриваємо Delphi, поміщаємо на форму компоненти Edit (поле введення) і Button (звичайна кнопка). Будемо обробляти події компонента Form, головною форми при створенні OnCreate і закриття OnClose, а також події натискання на кнопку Button OnClick.

Додаємо в секцію модулів Uses модуль IniFile, в якому міститься клас TIniFile, з яким наш додаток буде працювати.

На самому початку роботи програми (в тілі обробника події створення форми OnCreate) ми спробуємо прочитати дані з .INI файлу. Щоб це реалізувати, створимо об'єкт класу TIniFile, викликавши його конструктор, з ім'ям потрібного файлу. Файл ми отримаємо з імені виконуваного файлу програми Application.ExeName, змінивши його розширення на "ini" за допомогою функції ChangeFileExt.

Витягувати з .INI файлу окремі значення ми будемо за допомогою методів: ReadInteger, ReadString і ReadBool. Ці функції мають 3 аргументу







  1. Read / Write * (ім'я типу даних Integer, String або Bool) * (1N. 2N, 3N);
  2. 1N - перший аргумент, ім'я секції, в нашому випадку це буде Form
  3. 2N - другий аргумент, ім'я параметра (Top, Left, Text і т.п.)
  4. 3N - третій аргумент, вказує значення за замовчуванням (100, 200, 300 і т.п.) якщо використовується Read * читання, в разі Write * записи, це буде записується значення.

Витягти значення з .INI файлу нам можливо і не вдасться не тільки в аварійному випадку, але і по декількох з причин, наприклад, відсутність ініціалізації файлу, або секції. Тому, для обробки подібних або ще більш серйозних помилок ми будемо використовувати захищений блок try ... finally.

procedure TForm1.FormCreate (Sender: TObject);
var
IniSoub: TIniFile;
begin
Caption: = '* .INI';
Button1.Caption: = 'Зберегти "
Edit1.Text: = ";
// створюємо об'єкт класу TIniFile
IniSoub: = TIniFile.Create (ChangeFileExt (Application.ExeName, '.ini'));
try // пробуємо прочитати дані
Edit1.Text: = IniSoub.ReadString ( 'Edit', 'Text', ");
Top: = IniSoub.ReadInteger ( 'Form', 'Top', 100);
Left: = IniSoub.ReadInteger ( 'Form', 'Left', 100);
Height: = IniSoub.ReadInteger ( 'Form', 'Height', 100);
Width: = IniSoub.ReadInteger ( 'Form', 'Wedth', 147);
IF IniSoub.ReadBool ( 'Form', 'Maximized', false) then
WindowState: = wsMaximized
else
WindowState: = wsNormal;
finally
IniSoub.Free; // звільняємо пам'ять
end;
end;

procedure TForm1.Button1Click (Sender: TObject);
begin
Close;
end;

Коли ми закриваємо програму, подія закриття форми OnClose буде опрацьовано і запише поточні значення (висота, розмір вікна, і т.п.) в ініціалізації файл за допомогою методів класу TIniFile:

WriteString ()
WriteInteger ()
WriteBool ()

Ми їх розглянули вище, в Write * все теж, що і в Read *, крім останнього 3 аргументу, який записує .INI файл якесь числове значення.

procedure TForm1.FormClose (Sender: TObject; var Action: TCloseAction);
var
IniSoub: TIniFile;
begin
// створюємо об'єкт класу TIniFile
IniSoub: = TIniFile.Create (ChangeFileExt (Application.ExeName, '.ini'));
try // намагаємося записати дані в наш .INI файл
IniSoub.WriteString ( 'Edit', 'Text', Edit1.Text);
IniSoub.WriteInteger ( 'Form', 'Top', Top);
IniSoub.WriteInteger ( 'Form', 'Left', Left);
IniSoub.WriteInteger ( 'Form', 'Height', Height);
IniSoub.WriteInteger ( 'Form', 'Width', Width);
IniSoub.WriteBool ( 'Form', 'Maximized', WindowState = wsMaximized);
finally
IniSoub.Free; // звільнимо пам'ять
end;
end;

Тепер скомпілюйте додаток і збережіть його куди-небудь в папку або на робочий стіл. Відкрийте його і спробуйте поміняти, наприклад, розмір його вікна, його розташування на вашому моніторі і натисніть кнопку "Зберегти". Тепер відкрийте його заново і можете переконатися, що розмір вікна, і інше що ви міняли, відображається з тим же розміром. Всі ці дані знаходяться в .INI файлі, ви можете його відкрити і відредагувати, помінявши тим самим якісь значення, з яким додаток відобразитися, як ви його відкриєте.

Не забувайте при редагуванні .INI файлу вручну вказувати імена секцій в квадратні дужки [....], А всі інші рядки файлу, повинні мати формат <переменная>=<значение>

Якщо хочете передбачити можливість редагування .INI файлів через саму програму, можна використовувати компонент ValueListEditor. що знаходиться на вкладці Additional.







Схожі статті