uses Registry
在应用程序中,经常需要对注册表进行各种操作,如将程序名称、安装路径等信息保存到注册表中。Delphi对相应API函数做了进一步封装,使得在应用程序中操作注册表更加简单。 1、原理 Delphi提供了TRegistry类,它直接继承自TObject类,主要属性有:RootKey等,主要方法有: Create, CreateKey(Key), OpenKey(Key,CanCreate), WriteString(Name,Value),ReadString(Name), CloseKey, Free等,下面对它们进行简单介绍。 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;,用于在注册表中新建项,项的名称为参数Key的值。 1、3、OpenKey方法 函数声明为function OpenKey(const Key: String; CanCreate: Boolean):Boolean;,其中参数Key指定要打开的注册表的项,参数CanCreate指明当要打开的项不存在时是否创建,默认值为False;函数返回值为布尔类型,如果打开成功返回True,否则返回False。 1、4、WriteString方法 过程声明为procedure WriteString(const Name, Value: String);,其中参数Name指明要写入的注册表的字符串的名称,参数Value为要写入的字符串的值。如果该字符串不存在则写入,否则覆盖原来的取值。 1、5、ReadString方法 函数声明为function ReadString(const Name: String):String;,其中参数Name为要读取的字符串的名称,函数返回值为要读取的字符串的值,是字符串类型。如果该字符串在注册表中不存在,返回值为空字符串。
1.6 deletevalue('name')
WriteBinaryData('HistPaths',buf,0); uses Registry; procedure TForm2 . FormCreate(Sender: TObject); var i,len: integer ; Buf: array of byte ; R:TRegistry; Str: WideString ; begin Str := 'pop.126.com' ; len:=length(Str); SetLength(Buf,(len+ 1 )*sizeof( WideChar )); fillchar( Buf[ 0 ],Length(buf), 0 ); // for i:=0 to len-1 do // begin // Buf[i]:=ord(Str[i+1]); // end; Move( Byte (Str[ 1 ]),Buf[ 0 ],len*sizeof( WideChar )); R:=TRegistry . Create; Try R . RootKey := HKEY_CURRENT_USER; if R . OpenKey( 'Software\test' , True ) then try R . WriteBinaryData( 'Display Name' ,Buf[ 0 ],Length(Buf)); finally R . CloseKey; end ; Finally R . Free; End ; end ;
2、实例 下面分别为将信息写入注册表和从注册表中读取信息的例子。 2、1、将信息写入注册表 相应代码如下: var reg:TRegistry;//声明一个TRegistry类变量 … begin reg:=TRegistry.Create;//创建实例 reg.RootKey:=HKEY_CURRENT_USER;//指定需要操作的注册表的主键 if reg.OpenKey(’\Software\Delphi使用技巧’,true) then//如果打开成功则进行以下操作 begin reg.WriteString(’文章名称’,'在Delphi中轻松操作注册表’);//将需要保存的信息写入注册表 reg.CloseKey;//关闭注册表 end; reg.Free;//释放变量所占内存 … end; 2、2、从注册表中读取信息 相应代码如下: var reg:TRegistry;//声明一个TRegistry类变量 s:String;//声明一个字符串变量用来存放要读取的信息 … begin reg:=TRegistry.Create;//创建实例 reg.RootKey:=HKEY_CURRENT_USER;//指定需要操作的注册表的主键 if reg.OpenKey(’\Software\Delphi使用技巧’,true) then//如果打开成功则进行以下操作 begin s:=reg.ReadString(’文章名称’);//从注册表中读取对应字符串的值 //如果该字符串不存在则返回值为空字符串 reg.CloseKey;//关闭注册表 end; reg.Free;//释放变量所占内存 … end; 3、总结 本文首先介绍了在Delphi中操作注册表的方法,然后举例说明了具体应用。 (责任编辑:熊猫蜀黍) |