(5) 删除主键函数:
bool __fastcall DeleteKey( 主键名 );
如果参数为空字符串,则删除当前键值 。
(6) 打开主键函数 :
bool __fastcall OpenKey( 主键名,参数 );
此函数将定位到一个具体的主键位置,随后的操作(建立键值、删除键值以及在当前位置建立主键、删除主键)将以此主键为当前主键。参数为 True 则当主键不存在将建立这个主键,如果为 false 则不建立主键。
(7) 读取当前主键下 String 型的键值函数:
AnsiString __fastcall ReadString( 键值名 );
如: Edit1->Text=MyReg->ReadString(-MyString-);
将读取键值 MyString 的内容到文本框 Edit1 中。 同此函数类似的还有 ReadBool() 、 ReadInteger() 、 ReadFloat() 、 ReadDateTome() 、 ReadBinaryData() 等,用来读出不同类型的键值。
(8) 在当前主键中写入 String 型键值函数:
void __fastcall WriteString( 键值名,数据 );
如果是一个新键值名,那么相当于新建一个键值;如果是已有的键值,那么就是修改键值的数据。
如: WriteString(- 我的串 -,- 内容 -); 其它类型的键值(二进制值、 Dword 值)的读取和写入函数如 WriteInteger 、 WriteBool() 、 WriteFloat() 、 WriteDateTome() 、 WriteBinaryData() 等用法与上述类似。
(9) 判断键值或主键是否存在的函数:
bool __fastcall ValueExists( 键值名 );
这个方法判断当前键下是否存在指定的数据项,如果存在返回 true ,否则返回 false 。
bool __fastcall KeyExists( 主键名 );
这个方法判断一个键是否存在,如果存在返回 true ,否则返回 false 。
(10)从文件读入键值函数:
LoadKey( 键值名 , 文件名 ) ;
(11)一个键值保存到文件函数:
SaveKey( 键值名 , 文件名 ) ;
(12) 关闭键值函数:
void __fastcall CloseKey(void);
在注册表使用完毕后,应当及时调用 CloseKey() 成员函数关闭注册表,并调用 delete 方法将用 new 申请的内存空间释放。
(13)当前主键下子键值的获取函数:
void __fastcall GetKeyNames(Classes::TStrings * Strings) ;
我们可以用该成员函数得到当前主键下所有子键的名称,用 GetKeyInfo 得到更加详细的信息。必须指出,虽然 GetKeyNames() 的说明成 void __fastcall GetKeyNames(Classes::TStrings * Strings) ,也就是说,它的参数类型是 TString ,但是我们并不能首先声明一个 TString 类的实例,然后将它作为参数用于 GetKeyNames() 。这主要是由于 TStrings 类含有抽象成分。我们的解决方法是采用 TStrings 类的派生类 TStringList 来代替 TStrings 声明一个实例,并作为参数用于 GetKeyNames() 函数。
在获得子键的名称后,我们就可以利用有关函数进一步确定详细信息。如用我们可以用 GetValueNames() 结合 Read() 和 Write() 获得主键的值的详细信息。请看下面实例,这个例子的功能是将“ \Software\MyInfo ”主键下的所有子键名称显示在 ComboBox1 中:
# include ………… Tregistry * curReg=new TRegistry () ; curReg - >OpenKey( “ Software\\MyInfo-,true); KeyNames=new TStringList();// 注意 TstirngList 类的声明方法! curReg - >GetKeyNames(KeyNames); for(int i=0;iCount;i ++ ) ComboBox1 - >Items - >Add(KeyNames - >Strings[i]); curReg - >CloseKey(); delete KeyNames; |
3 使用 TRegistry 的一般步骤
一般来说,有以下四步操作:
1) 建立 TRegistry 类。 2) 利用 OpenKey() 方法打开一个键值。 3) 用 ReadType() 和 WriteType() 读写键值。 4) 调用 CloseKey ()关闭一个键值,最后调用 delete 方法将用 new 申请的内存空间释放。