TRegistry 註冊表使用方法

1 篇文章 / 0 new
author
TRegistry 註冊表使用方法
讀取
procedure TForm1.readClick(Sender: TObject);
Var
    myReg: TRegistry;
begin
    try
        myReg := TRegistry.Create;
        myReg.RootKey := HKEY_LOCAL_MACHINE;
        if myReg.OpenKey('SOFTWARE\myApp', FALSE) then
        begin
            txtName.Text := myReg.ReadString('My Name');
            Form1.Top := myReg.ReadInteger('PosY');
            Form1.Left := myReg.ReadInteger('PosX');
        end;
     finally
        myReg.Free;
    end;
end;
寫入
procedure TForm1.writeClick(Sender: TObject);
Var
    myReg: TRegistry;
begin
    try
        myReg := TRegistry.Create;
        myReg.RootKey := HKEY_LOCAL_MACHINE;
        if myReg.OpenKey('SOFTWARE\myApp\', TRUE) then
        begin
            myReg.WriteString('My Name', txtName.Text);
            myReg.WriteInteger('PosY', Form1.Top);
            myReg.WriteInteger('PosX', Form1.Left);
        end;
    finally
        myReg.Free;
    end;
end;
一些函式說明
●GetDataInfo
Function GetDataInfo(const ValueName:String;Var Value:TRegDataInfo):Boolean;
TregDataType=(rdunknown,rdstring,rdexpandstring,rdexpandstring,rdinterger,rdbinary);
TregDataInfo=record
  Regdata:TRegDataType;資料類型
  dataSize:integer;數據大小
end
valuename:和當前鍵關聯的資料值名稱
value:    返回資料的資訊,如為rdstring和rdexpandstring類型,則資料大小包括字串未尾的空結束字元。如果成功返回True,失敗返回False,並且Value的值為zeros
rdexpandstring:是一個包含環境變數的字串;如“%PATH%”。

●CreateKey方法
Function CreateKey(const Key:string):Boolena;
  新建一個名為Key的鍵,Key可以為絕對的或相對的名字,絕對名用反斜線“\”開頭,相對名是新建一個當前鍵的子鍵。新建沒有值。
  成功返回True,否則返回False,如果該鍵已存在將不產生效果。

●DeleteKey  刪除一個鍵及相關聯的資料,在win95中子鍵也將被刪除,NT中子鍵必須一個個刪除。
Function DeleteKey(const Key:string):Boolean;

●DeleteValue  刪除當前鍵中指定的一個資料值name。
Function DeleteValue (const Name:string):Boolean;

●GetDataSize  返回當前鍵中一個指定數值ValueName資料的大小。
Function GetDataSize(const ValueName:string):integer;

●GetDataType  返回當前鍵中一個指定數值Valuename資料的類型。
Function GetDataType(const Valuename;string):TRegDataType;

●GetKeyInfo方法
Function GetKeyInfo(var value:TRegkeyinfo):Boolean;
  返回當前鍵的資訊,在於value中。
TRegkeyinfo=record
  maxsubkeylen:integer;子鍵名的最長值(位元組)
  numvalues:integer;鍵值的數量
  maxvaluelen;最長的鍵值名的長度
  Filetime:TFileTime;最後一次更改的時間
end;

●Getkeynames  返回當前鍵所有子鍵的名子列表串。
Procedure Getkeynames(strings:Tsrtings);

●Getvaluenames  返回當前鍵所有鍵值名的列表串。
Procedure Getvaluenames(strings:Tstrings);

●Hassubkeys  判斷當前鍵是否有子鍵,有返回True,否則返回False。
Function hassubKeys:Boolean;

●keyExists  判斷指定的鍵是否存在。
Function KeyExists(const Key:string):Boolean;

●LoadKey方法
Function LoadKey(const Key,fileNmae:string):Boolean;
 在根鍵下新建
 從一個檔中載入註冊資訊到子鍵中,檔註冊資訊中包含資料值名、子鍵和資料。
  LoadKey使創建一個鍵單一化,子鍵,鍵值和資料在一人操作中完成,所有這些稱為一組,和單獨地創建它們不同應用程式可以在一個檔中讀取一組資料,這在用戶運行中重新設置有特別的用處。
 Key為要創建子鍵的名子
 FileName:為檔的位置,所指定的檔必須為以前用SaveKey函數或RegSaveKey API函數所建立的,檔案名不能包括副檔名。

●OpenKey方法
Function OpenKey(const Key:string;cancreate:Boolean):Boolean;
  使用該函數可以指定一個鍵作為當前鍵,如果鍵為nil,則當前鍵 將設置為根鍵。
  Cancreate決定是否在指定鍵不存在時創建該鍵,該函數創建的鍵的鍵值將不確定。
  如果成功地打開或創建,該函數返回True。

●OpenKeyReadOnly  以唯讀的方式打開Key值指定的鍵。
function OpenKeyReadOnly(const Key: String): Boolean;

●CloseKey  當不再使用一個鍵時應用該方法關閉該鍵。
procedure CloseKey;

●MoveKey方法
procedure MoveKey(const OldName, NewName: String; Delete: Boolean);
  該方法移動或複製一個鍵到一個新的位置,並把鍵的名子改為NewName。
  在Win95/98下該的子鍵和資料將被一起移動或複製到新的位置,在NT下子鍵必須用MoveKey明確的移動或自製。

●讀取資料
function ReadBinaryData(const Name: String; var Buffer; BufSize: Integer):Integer;
function ReadBool(const Name: String): Boolean;
function ReadCurrency(const Name: String): Currency;
function ReadDate(const Name: String): TDateTime;
function ReadDateTime(const Name: String): TDateTime;
function ReadFloat(const Name: String): Double;
function ReadInteger(const Name: String): Integer;
function ReadString(const Name: String): String;
function ReadTime(const Name: String): TDateTime;
  以上方法從當前主鍵讀取相應資料類型的鍵值的資料。

●RegistryConnect方法
function RegistryConnect(const UNCName: String): Boolean;
 與另一台電腦的註冊表建立連接,在建立連接前應將Rootkey屬性設為HKEY_USERS或HKEY_LOCAL_MACHINE。
 UNCName是另一台電腦的名子。格式如:\\computername 假如UNCName為nil,將打開本地電腦。
Free Web Hosting