РефератыИнформатика, программированиеРеРеестр: записьчтение

Реестр: записьчтение

Предводителев Сергей


Работа с системным реестром в Delphi достаточно простая. Использование реестра имеет некоторые преимущества перед INI-файлами. Они заключаются в том, что реестр - более стабильный, и у него нет ограничения на размер.


В Delphi для работы с реестром служит модуль Registry. Он предоставляет программисту методы для открытия, закрытия, сохранения, перемещения, копирования и удаления ключей и разделов реестра.


Итак, разберём использование Registry на небольшом примере: при закрытии программы будем сохранять положение и размеры формы в реестре, а при запуске соответственно считывать их. Для начала допишем Registry в раздел uses.


uses


Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,


Dialogs, Registry;


Теперь создадим обработчик события на закрытие формы:


procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);


var


reg:TRegistry; //1


begin


reg:=TRegistry.Create; //2


reg.RootKey:=HKEY_CURRENT_USER; //3


reg.OpenKey('softwarereg_test',true); //4


reg.WriteInteger('top',form1.Top); //5


reg.WriteInteger('left',form1.Left); //6


reg.WriteInteger('width',form1.Width); //7


reg.WriteInteger('height',form1.Height); //8


reg.CloseKey; //9


reg.free; //10


end;


Разберём что же у нас тут делается:


1) Объявляем переменную reg типа TRegistry - именно этот тип и служит для работы с реестром.


2) Инициализируем переменную для работы.


3) Свойство RootKey определяет корневой раздел.


4) Метод OpenKey служит для открытия раздела. Первый параметр - это собственно рздел для открытия, а второй параметр определяет создавать ли этот раздел если его не существует.


5 - 8 ) Здесь мы сохраняем нужные параметры формы в определённые ключи реестра. Для этого служат следующие методы:


WriteBinaryData(const Name: String; var Buffer; BufSize: Integer);


WriteBool(const Name: String; Value: Boolean);


WriteCurrency(const Name: String; Value: Currency);


WriteDate(const Name: String; Value: TDateTime);


WriteDateTime(const Name: String; Value: TDateTime);


WriteExpandString(const Name, Value: String);


WriteFloat(const Name: String; Value: Double);


WriteInteger(const Name: String; Value: I

nteger);


WriteString(const Name, Value: String);


WriteTime(const Name: String; Value: TDateTime);


Думаю понятно из названия для сохранения какого типа данных служит каждый из вышеперечисленных методов. Ну а в общем первый параметр - название ключа, а второй собственно данные. Для записи в ключ по умолчанию просто оставьте первый параметр пустым, например: WriteInteger('',56);


9) Метод CloseKey используется для закрытия ключа, открытого функцией OpenKey (см. п.4).


10) Выгружаем переменную reg из памяти.


Всё теперь при закрытии приложения оно будет сохранять данные о размере и положении формы в реестре. Можете проверить: запустите программу, а затем выйдите из неё и посмотрите в реестре (с помощью программы regedit) раздел HKEY_CURRENT_USERSoftwarereg_test там и будут наши данные.


Теперь нам надо считывать данные из реестра и соответственно изменять размеры и положение формы. Напишем обработчик события на создание формы:


procedure TForm1.FormCreate(Sender: TObject);


var


reg:TRegistry;


begin


reg:=TRegistry.Create;


reg.RootKey:=HKEY_CURRENT_USER;


reg.OpenKey('softwarereg_test',true);


form1.Top:=reg.ReadInteger('top');


form1.Left:=reg.ReadInteger('left');


form1.Width:=reg.ReadInteger('width');


form1.Height:=reg.ReadInteger('height');


reg.CloseKey;


reg.Free;


end;


Не изученный метод здесь только ReadInteger. Ну как вы наверное догадались, этот метод служит для считывания значения ключа из реестра. Кроме ReadInteger существуют ещё следующие методы:


ReadBinaryData(const Name: String; var Buffer; BufSize: Integer): Integer;


ReadBool(const Name: String): Boolean;


ReadCurrency(const Name: String): Currency;


ReadDate(const Name: String): TDateTime;


ReadFloat(const Name: String): Double;


ReadInteger(const Name: String): Integer;


ReadString(const Name: String): String;


ReadTime(const Name: String): TDateTime;


Ну вот собственно и всё, мы сделали программу, которая при выключении сохраняет данные о размере и положении формы в реестре, а при запуске их оттуда считывает; можете проверить.


Внимание! Запрещается перепечатка данной статьи или ее части без согласования с автором. Если вы хотите разместить эту статью на своем сайте или издать в печатном виде, свяжитесь с автором.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Реестр: записьчтение

Слов:521
Символов:5229
Размер:10.21 Кб.