Полную версию библиотеки KOL и MCK можно скачать здесь.
Сейчас уже стало стандартом, что настройки программы, важные (да и не
очень) параметры храняться в реестре Windows. По этой причине и в KOL
существует поддержка работы с реестром. Нельзя сказать, что эти
инструменты такие же мощные, как и TRegister в VCL, но необходимый минимум
найдется.
Работа с регистром в KOL построена с помощью функций. Их список я
привожу в таблице с кратким описанием (хотя человек знакомый с TRegister
поймет их и так).
Функция
Выполняемое действие
Функции для работы с
ключами
RegKeyOpenCreate
Создание ключа и его открытие
function RegKeyOpenCreate( Key: HKey;
const SubKey: String ): HKey;
RegKeyOpenRead
Открытие ключа для чтения
function RegKeyOpenRead( Key: HKey; const
SubKey: String ): HKey;
RegKeyOpenWrite
Открытие ключа для записи
function RegKeyOpenWrite( Key: HKey; const
SubKey: String ): HKey;
RegKeyClose
Закрытие ключа регистра ранее открытого с помощью RegKeyOpenRead
или RegKeyOpenWrite
procedure RegKeyClose( Key: HKey );
RegKeyDelete
Удаление ключа регистра
function RegKeyDelete( Key: HKey; const
SubKey: String ): Boolean;
RegKeyExists
Возвращение true, если "подключ" (SubKey) существует в данном
ключе (Key)
function RegKeyExists( Key: HKey; const
SubKey: String ): Boolean;
RegKeyGetSubKeys
Возвращение в List список всех "подключей"(ниже лежащих ключей)
для ключа Key
function RegKeyGetSubKeys( const Key:
HKEY; List: PStrList ): Boolean;
Функции для работы с переменными
RegKeyDeleteValue
Удаление из ключа Key переменной с именем Value.
function RegKeyDeleteValue( Key: HKey;
const Value: String ): Boolean;
RegKeyValExists
Возвращение TRUE, если параметр ValueName существует в ключе
Key.
function RegKeyValExists( Key: HKey; const
ValueName: String ): Boolean;
RegKeyValueSize
Возвращает размер переменной(ValueName). Для переменных типа
строка (string) возвращаемое значение равно длине строки + 1
(нулевой символ)
function RegKeyValueSize( Key: HKey; const
ValueName: String ): Integer;
RegKeyGetValueNames
Возвращает список всех имен переменных находящихся в ключе
Key
function RegKeyGetValueNames( const Key:
HKEY; List: PStrList ): Boolean;
RegKeyGetValueTyp
Возвращает тип переменной под именем ValueName. Возвращаемое
значение может быть следующие : REG_BINARY , REG_DWORD,
REG_DWORD_LITTLE_ENDIAN, REG_DWORD_BIG_ENDIAN, REG_EXPAND_SZ,
REG_LINK , REG_MULTI_SZ, REG_NONE, REG_RESOURCE_LIST,
REG_SZ
function RegKeyGetValueTyp( const Key:
HKEY; const ValueName: String ): DWORD;
Функции для работы с переменными
DWORD
RegKeyGetDw
Чтение из ключа данных типа DWORD. Если чтение не успешно, то
возвращение 0
function RegKeyGetDw( Key: HKey; const
ValueName: String ): DWORD;
Чтение из ключа данных типа binary. Происходит запись данных из
реестра в буфер Buffer размером Count. На выходе у функции
количество прочитанных байт.
function RegKeyGetBinary( Key: HKey; const
ValueName: String; var Buffer; Count: Integer ): Integer;
Для начала работы с каким-либо ключом регистра, вы должны открыть его с
помощью функций RegKeyOpenRead, RegKeyOpenWrite или RegKeyOpenCreate. В
первом параметре должен передаватся HKey какого нибудь ранее открытого
ключа или одна из следующих констант: HKEY_CLASSES_ROOT,
HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS Второй
параметр:SubKey - имя ключа расположенного ниже Key.
После того как вы открыли ключ, вы можете записывать и читать данные.
Ну и логическое завершение всего процесса - это команда RegKeyClose, т.е.
закрытие ключа, если он вам больше не нужен.
Пример чтения и записи в
реестра:
program Primer_1;
uses
windows,
messages,
kol;
{$R *.RES}const
KeyWin = "SOFTWARE\Microsoft\Windows\CurrentVersion";
var
Form,
edOption,
buOption,
List,
panTop:pControl;
Key:HKey;
/////////////////////////////////////////////////////////// Procedure ClickOnList( Dummy : Pointer; Sender : PControl );
begin// чтение из реестра
Key := RegKeyOpenRead(HKEY_LOCAL_MACHINE,KeyWin);
edOption.Text := RegKeyGetStr(Key,List.Items[List.CurIndex]);
RegKeyClose(Key);
end;
/////////////////////////////////////////////////////////// Procedure ClickOnButton( Dummy : Pointer; Sender : PControl );
begin// запись в реестраif edOption.Text="" then exit;
Key := RegKeyOpenWrite(HKEY_LOCAL_MACHINE,KeyWin);
RegKeySetStr(Key,List.Items[List.CurIndex],edOption.Text);
RegKeyClose(Key);
end;
/////////////////////////////////////////////////////////// begin
Form := NewForm(Applet,"Пример работы с реестром").SetSize(400,200);
// можно было обойтись и Form.CanResize := false
Form.Style := WS_BORDER or WS_SYSMENU or WS_VISIBLE;
Form.Font.FontName := "MS Sans Serif";
Form.Font.FontHeight := 8;
panTop := NewPanel(Form,esRaised).SetAlign(caTop);
edOption := NewEditbox(panTop,[]);
buOption := NewButton (panTop,"Применить").PlaceRight;
buOption.OnClick := TOnEvent( MakeMethod( nil, @ClickOnButton ) );
List := NewListbox(Form,[]).SetAlign(caClient);
List.Add("ProductId");
List.Add("ProductName");
List.Add("RegisteredOrganization");
List.Add("RegisteredOwner");
List.Add("Version");
List.Add("VersionNumber");
List.OnClick := TOnEvent( MakeMethod( nil, @ClickOnList ) );
// ----- Наводим красоту жонглируя с размерами.-------- // Можно и не вникать :)
edOption.Width := panTop.Width - buOption.Width-10;
buOption.Left := edOption.Width+ 4 ;
panTop.Height := edOption.Height+10;
//-----------------------------------------------------
Run(Form);
end.
Исходный текст : 1,92 Кб ; размер программы: 30Кб (без сжатия и
замены System) После компиляции вы увидите примерно следующие:
Если вы читали мои предыдущие монологи про KOL, вам должно быть в
основном все понятно. Не говорил я только про свойства Font.FontName и
Font.FontHeight, но тут можно вполне догадатся, что мы меняем параметры
шрифта.
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Урок 8 - Работа с реестром", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!