Реестр - это центральное
хранилище информации о параметрах системы и установленных программах. В версиях
Windows до Windows 95 программисты сохраняли параметры программ либо в
INI-файлах WIN.INI и SYSTEM.INI, либо в дополнительных INI-файлах. Хотя
использование INI-файлов поддерживается и в Win32, Microsoft настоятельно
рекомендует для хранения необходимых в работе программы параметров пользоваться
реестром. Реестр представляет собой иерархическую базу данных, cостоящую из
секций, подсекций и элементов. Каждая секция имеет свое назначение. Хранить
данные о пользовательских программах Microsoft рекомендует в секции HKEY_CURRENT_USER
и подсекции Software. В этой подсекции вы создаете подсекцию, идентифицирующую
вашу программу или фирму, и уже внутри нее располагаете данные.
Модуль Registry
Для упрощения работы с
регистратором в состав Delphi (начиная с версии 2.0) входит модуль REGISTRY,
содержащий реализацию трех классов, - TRegistry, TRegistryIniFile и
TRegIniFile.
Внимание! Чтобы использовать свойства и методы классов TRegistry,
TRegistryIniFile и TRegIniFile, необходимо включить в список uses модуль
Registry.
TRegIniFile
Собственно говоря, задача
класса 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. В качестве параметра вы указываете название
секции, и если таковой не существует, она создается:
RegFile :=
TRegIniFile.Create(SubKey);
После
того как файл регистратора открыт (и создана определенная секция), мы можем
записать данные. Поддерживаются три типа данных: целочисленные, логические и
строчные данные. Для записи этих данных существуют методы WriteInteger,
WriteBool и WriteString. В качестве параметров указываются:
·
название подсекции;
·
название элемента;
·
записываемые данные.
Так, чтобы записать значение
элемента MyIntVal в подсекции IntKey, следует выполнить код
RegFile.WriteInteger(IntKey, 'Int_Val', 32000);
а для того чтобы прочесть
значение, необходимо вызвать метод ReadInteger (в качестве параметров
указываются название подсекции, название элемента и значение по умолчанию):
RegFile.ReadInteger(IntKey, 'Int_Val', 0));
Для чтения логических и
строчных данных используются соответственно методы ReadBool и ReadStr, а для их
записи – методы WriteBool и WriteString.
Расссмотрим пример использования
перечисленных выше методов класса TRegIniFile. Расположим в форме компонент
Memo, две группы GroupBox и шесть кнопок – три в группе Write и три в группе
Read. Нажатие каждой кнопки в группе Write приведет к записи соответствующего
значения в реестр, нажатие каждой кнопки в группе Read – к чтению этого
значения.
Ниже
приведен исходный текст модуля, в котором содержатся обработчики нажатия
кнопок, использующие методы класса TRegIniFile.