Використання реєстру - delphi sources faq

Реєстр - це центральне сховище інформації про параметри системи і встановлені програми. У версіях 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.