Реєстр - це центральне сховище інформації про параметри системи і встановлені програми. У версіях Windows до Windows 95 програмісти зберігали параметри програм або в INI-файлах WIN.INI і SYSTEM.INI, або в додаткових INI-файлах. Хоча використання INI-файлів підтримується і в Win32, Microsoft настійно рекомендує для зберігання необхідних у роботі програми параметрів користуватися реєстром. Реєстр являє собою ієрархічну базу даних, Відбувся із секцій, підсекцій і елементів. Кожна секція має своє призначення. Зберігати дані про користувача програмах Microsoft рекомендує в секції HKEY_CURRENT_USER і підсекції Software. У цій підсекції ви створюєте підсекцію, що ідентифікує вашу програму або фірму, і вже всередині неї в своєму розпорядженні дані.
Для спрощення роботи з реєстратором до складу Delphi (починаючи з версії 2.0) входить модуль REGISTRY, що містить реалізацію трьох класів, - TRegistry, TRegistryIniFile і TRegIniFile.
Увага. Щоб використовувати властивості і методи класів TRegistry, TRegistryIniFile і TRegIniFile, необхідно включити в список uses модуль Registry.
Власне кажучи, завдання класу TRegIniFile - спростити перенесення 16-бітних програм в середу Windows 95. Методи цього класу еквівалентні методам класу TIniFile в 16-бітової версії Delphi. Клас TRegIniFile дозволяє звертатися до секції HKEY_CURRENT_USER, зчитувати і записувати рядки (методи ReadString і WriteString), цілочисельні значення (методи ReadInteger і WriteInteger), логічні значення (методи ReadBool і WriteBool), секції (методи ReadSection, ReadSections і ReadSectionValues), видаляти секції ( метод EraseSection) і елементи (метод DeleteKey). Розглянемо на прикладах, як використовуються функції цього класу.
Microsoft рекомендує записувати дані, пов'язані з вашої програми, в підсекції секції HKEY_CURRENT_USER_Software. Припустимо (не дуже фантазуючи на цю тему), що ваша програма називається RegDemo, і дані для неї розташовуються в секції Software \ RegDemo. Нижче ми покажемо, як помістити в реєстратор рядкові, цілочисельні і логічні дані, а потім вважати їх, - цих операцій буде досить для того, щоб зберегти в реєстраторі параметри нашої програми, а потім вважати їх.
Перш ніж записати дані в певну секцію, її необхідно створити. Це відбувається при виклику конструктора об'єкта TRegIniFile. Як параметр ви вказуєте назву секції, і якщо такої не існує, вона створюється:
Після того як файл реєстратора відкритий (і створена певна секція), ми можемо записати дані. Підтримуються три типи даних: цілочисельні, логічні та рядкові дані. Для запису цих даних існують методи WriteInteger, WriteBool і WriteString. Як параметри вказуються:
- назва підсекції;
- назва елемента;
- записуються дані.
Так, щоб записати значення елемента MyIntVal в підсекції IntKey, слід виконати код
а для того щоб прочитати значення, необхідно викликати метод ReadInteger (в якості параметрів зазначаються назва підсекції, назва елемента і значення за замовчуванням):
Для читання логічних і малих даних використовуються відповідно методи ReadBool і ReadStr, а для їх запису - методи WriteBool і WriteString.
Расссмотрім приклад використання перерахованих вище методів класу TRegIniFile. Розташуємо в формі компонент Memo, дві групи GroupBox і шість кнопок - три в групі Write і три в групі Read. Натискання кожної кнопки в групі Write призведе до запису відповідного значення в реєстр, натискання кожної кнопки в групі Read - до читання цього значення.
Нижче наведено вихідний текст модуля, в якому містяться обробники натискання кнопок, що використовують методи класу TRegIniFile.
Перш ніж розглянути приклад використання властивостей і методів класу TRegistry, давайте коротко перерахуємо їх.
У цій таблиці наведено властивості класу TRegistry.