предводителя Сергій
Робота з системним реєстром в 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;
Ну от власне і все, ми зробили програму, яка при виключенні зберігає дані про розмір і положенні форми в реєстрі, а при запуску їх звідти зчитує; можете перевірити.
Увага! Передрук даної статті або її частини без узгодження з автором. Якщо ви хочете розмістити цю статтю на своєму сайті або видати в друкованому вигляді, зв'яжіться з автором.
Список літератури
Для підготовки даної роботи були використані матеріали з сайту coderpro.fatal.ru/