Реєстр:
запісьчтеніе h2>
ватажків
Сергій p>
Робота з
системним реєстром в Delphi досить проста. Використання реєстру має
деякі переваги перед INI-файлами. Вони полягають в тому, що реєстр --
більш стабільний, і в нього немає обмеження на розмір. p>
У Delphi для
роботи з реєстром є модуль Registry. Він надає програмісту методи
для відкриття, закриття, збереження, переміщення, копіювання і видалення ключів
і розділів реєстру. p>
Отже, розберемо
використання Registry на невеликому прикладі: при закритті програми будемо
зберігати положення і розміри форми в реєстрі, а при запуску відповідно
зчитувати їх. Для початку Допишемо Registry в розділ uses. P>
uses p>
Windows, Messages, SysUtils, Variants, Classes
Graphics, Controls, Forms, p>
Dialogs, Registry; p>
Тепер створимо
обробник події на закриття форми: p>
procedure TForm1.FormCloseQuery (Sender: TObject; var
CanClose: Boolean); p>
var p>
reg: TRegistry;// 1 p>
begin p>
reg: = TRegistry.Create;// 2 p>
reg.RootKey: = HKEY_CURRENT_USER;// 3 p>
reg.OpenKey ( 'softwarereg_test', true);// 4 p>
reg.WriteInteger ( 'top', form1.Top);// 5 p>
reg.WriteInteger ( 'left', form1.Left);// 6 p>
reg.WriteInteger ( 'width', form1.Width);// 7 p>
reg.WriteInteger ( 'height', form1.Height);// 8 p>
reg.CloseKey;// 9 p>
reg.free;// 10 p>
end; p>
Розберемо що ж
у нас тут робиться: p>
1) Оголошуємо
змінну reg типу TRegistry - саме цей тип і
служить для роботи з реєстром. p>
2)
Ініціалізіруем змінну для роботи. P>
3) Властивість RootKey
визначає кореневий розділ. p>
4) Метод OpenKey
служить для відкриття розділу. Перший параметр - це власне рздел для
відкриття, а другий параметр визначає чи створювати цей розділ якщо його не
існує. p>
5 - 8) Тут
ми зберігаємо потрібні параметри форми в певні ключі реєстру. Для цього
служать наступні методи: p>
WriteBinaryData (const Name: String; var Buffer;
BufSize: Integer); p>
WriteBool (const Name: String; Value: Boolean); p>
WriteCurrency (const Name: String; Value: Currency); p>
WriteDate (const Name: String; Value: TDateTime); p>
WriteDateTime (const Name: String; Value: TDateTime); p>
WriteExpandString (const Name, Value: String); p>
WriteFloat (const Name: String; Value: Double); p>
WriteInteger (const Name: String; Value: Integer); p>
WriteString (const Name, Value: String); p>
WriteTime (const Name: String; Value: TDateTime); p>
Думаю зрозуміло
з назви для збереження якого типу даних служить кожен з
перерахованих вище методів. Ну а загалом перший параметр - назва ключа, а
другий власне дані. Для запису в ключ за замовчуванням просто залиште перший
параметр порожнім, наприклад: WriteInteger ('', 56); p>
9) Метод CloseKey
використовується для закриття ключа, відкритого функцією OpenKey
(див. п.4). p>
10) вивантажуємо
змінну reg з пам'яті. p>
Все тепер при
закритті програми вона буде зберігати дані про розмір і положенні форми в
реєстрі. Можете перевірити: запустіть програму, а потім вийдіть з неї і
подивіться в реєстрі (за допомогою програми regedit) розділ HKEY_CURRENT_USERSoftwarereg_test
там і будуть наші дані. p>
Тепер нам треба
зчитувати дані з реєстру і відповідно змінювати розміри і положення
форми. Напишемо обробник події на створення форми: p>
procedure TForm1.FormCreate (Sender: TObject); p>
var p>
reg: TRegistry; p>
begin p>
reg: = TRegistry.Create; p>
reg.RootKey: = HKEY_CURRENT_USER; p>
reg.OpenKey ( 'softwarereg_test', true); p>
form1.Top: = reg.ReadInteger ( 'top'); p>
form1.Left: = reg.ReadInteger ( 'left'); p>
form1.Width: = reg.ReadInteger ( 'width'); p>
form1.Height: = reg.ReadInteger ( 'height'); p>
reg.CloseKey; p>
reg.Free; p>
end; p>
Не вивчений
метод тут тільки ReadInteger. Ну, як ви напевно здогадалися, цей
метод служить для зчитування значення ключа з реєстру. Крім ReadInteger
існують ще такі методи: p>
ReadBinaryData (const Name: String; var Buffer;
BufSize: Integer): Integer; p>
ReadBool (const Name: String): Boolean; p>
ReadCurrency (const Name: String): Currency; p>
ReadDate (const Name: String): TDateTime; p>
ReadFloat (const Name: String): Double; p>
ReadInteger (const Name: String): Integer; p>
ReadString (const Name: String): String; p>
ReadTime (const Name: String): TDateTime; p>
Ну ось
власне і все, ми зробили програму, яка при виключенні зберігає дані
про розмір і положенні форми в реєстрі, а під час запуску їх звідти зчитує;
можете перевірити. p>
Увага!
Забороняється передрук цієї статті або її частини без узгодження з автором.
Якщо ви хочете розмістити цю статтю на своєму сайті або видати в друкованому вигляді,
зв'яжіться з автором. p>
Список
літератури h2>
Для підготовки
даної роботи були використані матеріали з сайту http://coderpro.fatal.ru/
p>