Робота з ініфайлами (ini)
Робота з ініфайлами (*.ini)
У цій роботі ми розглянемо техніку створення ініфайлів, їх призначення та застосування. Почнемо з відповіді питанням навіщо ж потрібні ці ініфайли?! Припустимо, що ви створили програму, в якій користувач може налаштовувати колір фону, шрифт написів і таке інше. Коли він повторно включить вашу програму він дуже розчарується, тому що всі його старання з налаштування інтерфейсу вашої програми зникли даремно - програма буде мати такий вигляд, який зробили ви при проектуванні програми. Так ось, щоб ці налаштування зберігати, найкраще користуватися ініфайлами.
Однією з головних переваг ініфайлів є те, що ці файли підтримують змінні різних типів (String, Integer, Boolean). У цих файлах дуже зручно зберігати різні налаштування, наприклад параметри шрифту, колір фону, які checkbox'и вибрав користувач та багато іншого.
Тепер почнемо розбиратися із цими ініфайлами. Для початку створіть нову програму. Додайте до секції uses слово inifiles. Збережіть та відкомпілюйте вашу програму. Тепер зробимо, щоб у кожному відкритті програми форма мала такі розміри, які встановив користувач востаннє. Для початку нам потрібно створити об'єкт типу Inifile. Створюється методом Create(Filename:string); причому якщо в змінній Filename не вказаний шлях до фалу, то він створитися в директорії Windows, що не дуже зручно. Тому ми створимо цей файл у директорії нашої програми. Напишемо це в обробник події OnDestroy для форми:
procedure TForm1.FormDestroy(Sender: TObject);
var Ini: Tinifile; //Необхідно створити об'єкт, щоб потім з ним працювати
Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'MyIni.ini'); //Створили файл у директорії програми
Якщо файлз таким ім'ям існує, він відкриється для читання, і якщо ні - він буде створено. Це дуже зручно, тому що не треба обробляти можливі виняткові ситуації, які можуть виникнути під час звернення до файлу.
Ось файл MyIni.ini після завершення роботи програми (у вас звичайно значення будуть іншими):
Тепер детально розберемося як записувати інформацію в ініфайли:
Ini.WriteInteger(const Section: string, const Ident:string, Value: Integer);
Тут Section це ім'я секції, куди будуть поміщені параметри і значення. У файлі імена секцій поміщені у квадратні дужки. Зазвичай у секції поєднують подібні параметри.
Ident - це назва параметра, якому присвоюватиметься якесь значення.
Value - це власне значення, яке присвоєно параметру. У файлі воно стоїть після знаку рівне.
Тепер напишемо обробник події OnCreate для форми, в якій зчитуватимемо значення з файлу і змінюватимемо розміри форми відповідно до отриманих значень. Код повинен мати такий вигляд:
procedure TForm1.FormCreate(Sender: TObject);
var Ini: Tinifile;
Form1.W, 100); //останнє значення (100) це значення за умовчанням (default)
У цьому коді все просто: відкрили файл, прочитали з відповідних секцій необхідні параметри та надали їх формі. Читання значень з ініфайлу насправді нічим не відрізняється від запису в них. Вказуєте секцію, де зберігається потрібний параметр, вказуєте параметр і читаєте його значення. Як ви бачите все просто!
Тепер я відповім ще на одне запитання, яке може виникнути – чому не звичайні текстові файли і не реєстр? Відповідаю: з текстового файлу дуже складно отримати та обробити необхідну інформацію. Багато хто рекомендує для Win95/98/2000/Me,коротше для всіх 32-розрядних ОС використовувати саме реєстр, але особисто я вважаю, що ініфайли зручніше, тому що при переносі програми на інший комп'ютер, потрібно перенести тільки один ініфайл, а по-друге, якщо ви що-небудь у реєстрі випадково видалите , може статися каюк.