在應用程序中,經(jīng)常需要對注冊表進(jìn)行各種操作,如將程序名稱(chēng)、安裝路徑等信息保存到注冊表中。Delphi對相應API函數做了進(jìn)一步封裝,使得在應用程序中操作注冊表更加簡(jiǎn)單。
1、原理
Delphi提供了TRegistry類(lèi),它直接繼承自TObject類(lèi),主要屬性有:RootKey等,主要方法有:
Create,
CreateKey(Key),
OpenKey(Key,CanCreate),
WriteString(Name,Value),ReadString(Name),
CloseKey,
Free等,下面對它們進(jìn)行簡(jiǎn)單介紹。
1、1、RootKey屬性
指定當前操作的注冊表主鍵,共有HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USERS、HKEY_CURRENT_CONFIG五種取值,默認值為HKEY_CURRENT_USER。
1、2、CreateKey方法
函數聲明為function CreateKey(const Key: String):Boolean;,用于在注冊表中新建項,項的名稱(chēng)為參數Key的值。
1、3、OpenKey方法
函數聲明為function OpenKey(const Key: String; CanCreate: Boolean):Boolean;,其中參數Key指定要打開(kāi)的注冊表的項,參數CanCreate指明當要打開(kāi)的項不存在時(shí)是否創(chuàng )建,默認值為False;函數返回值為布爾類(lèi)型,如果打開(kāi)成功返回True,否則返回False。
1、4、WriteString方法
過(guò)程聲明為procedure WriteString(const Name, Value: String);,其中參數Name指明要寫(xiě)入的注冊表的字符串的名稱(chēng),參數Value為要寫(xiě)入的字符串的值。如果該字符串不存在則寫(xiě)入,否則覆蓋原來(lái)的取值。
1、5、ReadString方法
函數聲明為function ReadString(const Name: String):String;,其中參數Name為要讀取的字符串的名稱(chēng),函數返回值為要讀取的字符串的值,是字符串類(lèi)型。如果該字符串在注冊表中不存在,返回值為空字符串。
2、實(shí)例
下面分別為將信息寫(xiě)入注冊表和從注冊表中讀取信息的例子。
2、1、將信息寫(xiě)入注冊表
相應代碼如下:
var
reg:TRegistry;//聲明一個(gè)TRegistry類(lèi)變量
...
begin
reg:=TRegistry.Create;//創(chuàng )建實(shí)例
reg.RootKey:=HKEY_CURRENT_USER;//指定需要操作的注冊表的主鍵
if reg.OpenKey('/Software/Delphi使用技巧',true) then//如果打開(kāi)成功則進(jìn)行以下操作
begin
reg.WriteString('文章名稱(chēng)','在Delphi中輕松操作注冊表');//將需要保存的信息寫(xiě)入注冊表
reg.CloseKey;//關(guān)閉注冊表
end;
reg.Free;//釋放變量所占內存
...
end;
2、2、從注冊表中讀取信息
相應代碼如下:
var
reg:TRegistry;//聲明一個(gè)TRegistry類(lèi)變量
s:String;//聲明一個(gè)字符串變量用來(lái)存放要讀取的信息
...
begin
reg:=TRegistry.Create;//創(chuàng )建實(shí)例
reg.RootKey:=HKEY_CURRENT_USER;//指定需要操作的注冊表的主鍵
if reg.OpenKey('/Software/Delphi使用技巧',true) then//如果打開(kāi)成功則進(jìn)行以下操作
begin
s:=reg.ReadString('文章名稱(chēng)');//從注冊表中讀取對應字符串的值
//如果該字符串不存在則返回值為空字符串
reg.CloseKey;//關(guān)閉注冊表
end;
reg.Free;//釋放變量所占內存
...
end;
3、總結
本文首先介紹了在Delphi中操作注冊表的方法,然后舉例說(shuō)明了具體應用。
聯(lián)系客服