Реєстр запісьчтеніе

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Ватажків Сергій

Робота з системним реєстром в 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: Integer);

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;

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

Увага! Передрук цієї статті або її частини без узгодження з автором. Якщо ви хочете мати цю статтю на своєму сайті або видати в друкованому вигляді, зв'яжіться з автором.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Доповідь
7.1кб. | скачати


Схожі роботи:
Реєстр до договору поданих до врахування векселів
© Усі права захищені
написати до нас