1. 程式人生 > >delphi登錄檔操作完全手冊

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。