delphi登錄檔操作完全手冊
32位Delphi程式中可利用TRegistry物件來存取登錄檔檔案中的資訊。
一、建立和釋放TRegistry物件
1.建立TRegistry物件。為了操作登錄檔,要建立一個TRegistry物件:ARegistry := TRegistry.Create;
2.釋放TRegistry物件。對登錄檔操作結束後,應釋放TRegistry物件所佔記憶體:ARegistry.Destroy。
二、指定要操作的鍵
操作登錄檔時,首先應指定操作的主鍵:先給屬性RootKey賦值以指定根鍵,然後用方法OpenKey來指定要操作的主鍵名。
1.指定根鍵(RootKey)。
根鍵是登錄檔的入口,也登錄檔資訊的分類,其值可為:
HKEY—CLASSES—ROOT:儲存整個系統物件類資訊,如ActiveX物件註冊、檔案關聯等資訊。
HKEY—CURRENT—USER:儲存當前使用者的配置資訊。為屬性RootKey的預設值。
HKEY—LOCAL—MACHINE:儲存當前系統的軟硬體配置資訊。應用程式自己的資訊可以儲存在該根鍵下。
HKEY—USERS:儲存所有使用者通用的配置資訊。
還可以是HKEY—CURRENT—CONFIG、HKEY—DYN—DATA。
2.指定要操作的主鍵。
Function OpenKey(const Key: string; CanCreate: Boolean): Boolean;
Key:主鍵名,是鍵名全名中除去根鍵的部分,如Software/Borland/Delphi。
CanCreate:在指定的主鍵名不存在時,是否允許建立該主鍵,True表示允許。
返回值True表示操作成功。
3.關閉當前主鍵。
在讀取或儲存資訊之後,應及時將關閉當前主鍵:procedure CloseKey。
三、從登錄檔中讀取資訊
Read系列方法從登錄檔讀取指定的資訊(字串、二進位制和十六進位制),並轉換為指定的型別。
1.Read系列方法。
function ReadString(const Name: string): string;
讀取一個字串值,Name為字串名稱。
function ReadInteger(const Name: string): Integer;
讀取一個整數值,Name為整數名稱。
function ReadBinaryData(const Name: string; var Buffer; BufSize: Integer):Integer;
讀取二進位制值,Name為二進位制值名稱,Buffer為接收緩衝區,BufSize為緩衝區大小,返回為實際讀取的位元組數。
其它方法還有:ReadBool、ReadCurrency、ReadDate、ReadDateTime、ReadFloat、ReadTime。
2.讀取資訊一例(顯示Windows的版本)。
在HKEY—LOCAL—MACHINE/Software/Microsoft/Windows/CurrentVersion下,有三個字串值Version、VersionNumber和SubVersionNumber,用於記錄當前Windows的版本號。
{請在Uses中包含Registry單元}
procedure TForm1.Button1Click(Sender:TObject);
var
ARegistry : TRegistry;
begin
ARegistry := TRegistry.Create;
//建立一個TRegistry例項
with ARegistry do
begin
RootKey := HKEY—LOCAL—MACHINE;//指定根鍵為HKEY—LOCAL—MACHINE
//開啟主鍵Software/Microsoft/Windows/CurrentVersion
if OpenKey( ′Software/Microsoft/Windows/CurrentVersion′,false ) then
begin
memo1.lines.add('Windows版本:′+ ReadString(′Version′));
memo1.lines.add('Windows版本號:′+ ReadString(′VersionNumber′));
memo1.lines.add(′Windows子版本號:′+ ReadString(′SubVersionNumber′));
end;
CloseKey;//關閉主鍵
Destroy;//釋放記憶體
end;
end;
四、向登錄檔中寫入資訊
Write系列方法將資訊轉化為指定的型別,並寫入登錄檔。
1.Write系列方法。
procedure WriteString(const Name, Value: string);
寫入一個字串值,Name為字串的名稱,Value為字串值。
procedure WriteInteger(const Name: string; Value: Integer);
寫入一個整數值。
procedure WriteBinaryData(const Name: string; var Buffer; BufSize: Integer);
寫入二進位制值,Name為二進位制值的名稱,Buffer為包含二進位制值的緩衝區,BufSize為緩衝區大小。
其它方法還有:WriteBool、WriteCurrency、WriteDate、WriteDateTime、WriteFloat、WriteTime。