Доклад: Реестр: запись\чтение
Название: Реестр: запись\чтение Раздел: Рефераты по информатике, программированию Тип: доклад |
Предводителев Сергей Работа с системным реестром в 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; Ну вот собственно и всё, мы сделали программу, которая при выключении сохраняет данные о размере и положении формы в реестре, а при запуске их оттуда считывает; можете проверить. Внимание! Запрещается перепечатка данной статьи или ее части без согласования с автором. Если вы хотите разместить эту статью на своем сайте или издать в печатном виде, свяжитесь с автором. |