Робота з ініфайламі (*. ini) h2>
Михайло Хрістосенко p>
В
цій роботі ми розглянемо техніку створення ініфайлов їх призначення і
застосування. Почнемо з відповіді на питання навіщо ж потрібні ці ініфайли?!
Припустимо, що ви створили програму, в якому користувач може
настроювати колір фону, шрифт написів і так далі. Коли він повторно включить
вашу програму він дуже сильно розчарується, тому що за все його старання по
налаштуванню інтерфейсу вашої програми пропали дарма - програма буде мати
такий вигляд, який зробили ви при проектуванні програми. Так от щоб ці
налаштування зберігати, найкраще користуватися ініфайламі. p>
Одне
з головних переваг ініфайлов полягає в тому, що ці файли підтримують
змінні різних типів (String, Integer, Boolean). У цих файлах дуже зручно
зберігати різні настройки, наприклад параметри шрифту, колір фону, які
checkbox'и вибрав користувач і багато іншого. p>
Тепер
почнемо вирішувати ці ініфайламі. Для початку створіть новий додаток.
Додайте у секцію uses слово inifiles. Збережіть і відкомпілюйте ваше
додаток. Тепер зробимо, щоб при кожному відкритті програми форма мала
такі розміри, які встановив користувач останній раз. Для початку нам треба створити об'єкт типу
Inifile. Створюється він методом Create (Filename: string); причому якщо в змінної
Filename не вказаний шлях до фалу, то він створитися в директорії Windows, що не
дуже-то зручно. Тому ми створимо цей файл у директорії нашої програми.
Напишемо це в обробник події OnDestroy для форми: p>
procedure
TForm1.FormDestroy (Sender: TObject); p>
var
Ini: Tinifile;// необхідно створити об'єкт, щоб потім з ним працювати p>
begin p>
Ini: = TiniFile.Create (extractfilepath (paramstr (0)) + 'MyIni.ini');
//створили файл в директорії програми p>
Ini.WriteInteger ( 'Size', 'Width', form1.width);
p>
Ini.WriteInteger ( 'Size', 'Height', form1.height); p>
Ini.WriteInteger ( 'Position', 'X', form1.left); p>
Ini.WriteInteger ( 'Position', 'Y', form1.top); p>
Ini.Free; p>
end; p>
Якщо
файл вже існує, то він відкриється для читання, а якщо ні - то він
буде створений. Це дуже зручно, тому що не треба обробляти можливі
виняткові ситуації, які можуть виникнути при зверненні до файлу. p>
Ось
файл MyIni.ini після завершення роботи програми (у вас природно значення
будуть іншими): p>
[Size] p>
Width = 188 p>
Height = 144 p>
[Position] p>
X = 14 p>
Y = 427 p>
Тепер
детально розберемося як записувати інформацію в ініфайли: p>
Після
того, як ви створили ініфайл, в нього можна записувати три види змінних:
Integer, String, Boolean, це здійснюється відповідними процедурами:
WriteInteger, WriteString, WriteBool. У всіх цих процедур однакові
параметри. Загалом оголошення цих процедур виглядає так: p>
Ini.WriteInteger (const Section:
string, const Ident: string, Value:
Integer); p>
Тут
Section-це ім'я секції, куди будуть поміщені параметри і значення. У файлі
імена секцій укладені в квадратні дужки. Зазвичай в секції об'єднують схожі
параметри. p>
Ident
- Це назва параметра, якому буде присвоюватися яке-небудь значення. p>
Value
- Це власне значення, яке буде присвоєно параметру. У файлі воно коштує
після знака одно. p>
Тепер
напишемо обробник події OnCreate для форми, в якому будемо зчитувати
значення з файлу і змінювати розміри форми згідно з отриманими значеннями.
Код повинен мати такий вигляд: p>
procedure
TForm1.FormCreate (Sender: TObject); p>
var Ini: Tinifile; p>
begin p>
Ini: = TiniFile.Create (extractfilepath (paramstr (0)) + 'MyIni.ini');
//відкриваємо файл p>
Form1.Width: = Ini.ReadInteger ( 'Size', 'Width', 100);
//останнє значення (100) це значення за умовчанням (default) p>
Form1.Height: = Ini.ReadInteger ( 'Size', 'Height', 100); p>
Form1.Left: = Ini.ReadInteger ( 'Position', 'X', 10); p>
Form1.Top: = Ini.WriteInteger ( 'Position', 'Y', 10); p>
Ini.Free; p>
end; p>
В
цьому коді все просто: відкрили файл, прочитали з відповідних секцій
необхідні параметри та привласнили їх формі. Читання значень з ініфайла по суті
нічим не відрізняється від запису в них. Вказуєте секцію, де зберігається
необхідний параметр, вказуєте параметр і читаєте його значення. Як ви бачите
все просто! p>
Тепер
я відповім на ще одне питання, яке може з'явитися - чому не звичайні
текстові файли і не реєстр? Відповідаю: з текстового файлу дуже складно отримати
і обробити необхідну інформацію. Багато рекомендують для Win95/98/2000/Me,
коротше для всіх 32-розрядних ОС використовувати саме реєстру, але особисто я вважаю,
що ініфайли зручніше, тому що при при переносі програми на інший комп'ютер,
потрібно перенести тільки один ініфайл, а по-друге, якщо ви що-небудь в реєстрі
випадково видаліть, то може статися каюк. p>
Список літератури h2>
Для
підготовки даної роботи були використані матеріали з сайту http://vlad2000.h1.ru/ p>