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

4436
знаков
0
таблиц
0
изображений

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

Работа с системным реестром в 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('software\reg_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: Integer);

WriteString(const Name, Value: String);

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

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

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

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

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

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

procedure TForm1.FormCreate(Sender: TObject);

var

reg:TRegistry;

begin

reg:=TRegistry.Create;

reg.RootKey:=HKEY_CURRENT_USER;

reg.OpenKey('software\reg_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;

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

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

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://coderpro.fatal.ru/


Информация о работе «Реестр: запись\чтение»
Раздел: Информатика, программирование
Количество знаков с пробелами: 4436
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
67200
0
2

... нужно привести к типу System.Int32, чтобы поместить его в реестр. После чтения из реестра с помощью GetDef() значение должно быть преобразовано обратно к типу AcedCompressionMode. Описание демонстрационного проектаа Чтобы проиллюстрировать различные способы работы с бинарными данными с помощью рассмотренных выше классов, разработано небольшое приложение, которое представляет собой примитивный ...

Скачать
71957
0
0

... реализации   2.1 Описание структуры программы   2.1.1 Диаграмма взаимодействия модулей Программа реализована на 2х модулях, один из которых базируясь на API-функциях Windows осуществляет взаимодействие с системным реестром, а второй предоставляет информацию пользователю о текущих значениях предопределенных параметров, и заносит сделанные пользователем изменения параметров в системный реестр. ...

Скачать
8682
0
0

... списке выберите подключ - Software – и раскройте его. Найдите во вновь открывшемся списке папку – VB and VBA Program Setting – это и есть раздел Системного Реестра куда с помошью встроенных операторов и функций Visual Basic Вы можете записывать и считывать необходимую Вам информацию. Запустите Visual Basic и откройте новый проект. Поместите на форму четыре командные кнопки и в свойстве Caption" ...

Скачать
590163
0
0

... , должно быть облечено в определенную правовую форму. Оно должно быть выражено в виде закона, указa, постановления, решения, приказа, инструкции или в иной установленной форме Теория государства и права. / Под ред. В.К. Бабаева. М., 1999. С.320.. Под источниками экологического права понимаются нормативно-правовые акты, содержащие нормы, регулирующие отношения в сфере взаимодействия общества и ...

0 комментариев


Наверх