Пятница, 15.11.2024, 20:56
Приветствую Вас Гость | RSS

DELPHI Report

Каталог статей Delphi Report

Главная » Статьи » - Работа с реестром

Использование реестра

Реестр - это центральное хранилище информации о параметрах системы и установленных программах. В версиях 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.

Code:

unit RDUnit;

interfaceuses

Windows, Messages, SysUtils, Classes, Graphics, Controls,

 

Forms, Dialogs, StdCtrls, Registry;

type

TForm1 = class(TForm)

   Memo1: TMemo;

   GroupBox1: TGroupBox;

   GroupBox2: TGroupBox;

   Label1: TLabel;

   Button1: TButton;

   Button2: TButton;

   Button3: TButton;

   Button4: TButton;

   Button5: TButton;

   Button6: TButton;

   procedure FormCreate(Sender: TObject);

   procedure Button1Click(Sender: TObject);

   procedure Button2Click(Sender: TObject);

   procedure Button3Click(Sender: TObject);

   procedure Button4Click(Sender: TObject);

   procedure Button5Click(Sender: TObject);

   procedure Button6Click(Sender: TObject);

   procedure FormClose(Sender: TObject;

     var Action: TCloseAction);

private

   { Private declarations }

public

   { Public declarations }

end;

var

Form1: TForm1;

implementation{$R *.DFM}var

RegFile: TRegIniFile;

const

//Подсекция

SubKey: string = 'Software\RegDemo';

// Элемент для хранения логических данных

BoolKey: string = 'BoolKey';

// Элемент для хранения целочисленных данных

IntKey: string = 'IntKey';

// Элемент для хранения строчных данных

StrKey: string = 'StrKey';

 

procedure TForm1.FormCreate(Sender: TObject);

begin

// Создать экземпляр класса

RegFile := TRegIniFile.Create(SubKey);

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

// Записать целочисленное значение

RegFile.WriteInteger(IntKey, 'Value', 1998);

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

// Записать булево значение

RegFile.WriteBool(BoolKey, 'Value', True);

end;

 

procedure TForm1.Button3Click(Sender: TObject);

begin

// Записать строку

RegFile.WriteString(StrKey, 'Value', 'Demo');

end;

 

procedure TForm1.Button4Click(Sender: TObject);

begin

// Считать целочисленное значение

Memo1.Lines.Add('Int Value = ' +

   IntToStr(RegFile.ReadInteger(IntKey,

   'Value', 0)));

end;

 

procedure TForm1.Button5Click(Sender: TObject);

begin

// Считать булево значение

if RegFile.ReadBool(BoolKey, 'Value', False) then

   Memo1.Lines.Add('Bool Value = True')

else

   Memo1.Lines.Add('Bool Value = False');

end;

 

procedure TForm1.Button6Click(Sender: TObject);

begin

// Считать строку

Memo1.Lines.Add(RegFile.ReadString(StrKey, 'Value', ''));

end;

 

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

// Удалить секцию

RegFile.EraseSection(SubKey);

// Освободить память

RegFile.Free;

end;

end.

 

Категория: - Работа с реестром | Добавил: delphi (31.01.2009)
Просмотров: 3776 | Рейтинг: 1.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Меню сайта
Google
Форма входа
Категории раздела
Общие вопросы [3] Среда Delphi [1]
Создание отчетов. Rave Reports [6] - Delphi DLL [9]
- Работа с реестром [5] Внешний вид программы [9]
Прикладные программы [1]
Здесь будут размещаться программы, файлы и по возможности описание программ прикладного характера
MS Office (MS Word, MS Excel ) [40]
Aвтоматизация отчетов с помощью средств MS Office (Word, Excel)
Построение графиков TChart, TDBChar [10] Matlab [3]
Здесь будут представлены примеры и статьи решения математических задач в среде матричных вычислений Matlab
Поиск
Друзья сайта
Статистика
Copyright MyCorp © 2024