关于写注册表的问题,帮看这段代码。急!!!!!在线等待...(50分)

  • 主题发起人 awind616
  • 开始时间
A

awind616

Unregistered / Unconfirmed
GUEST, unregistred user!
Reg:= TRegIniFile.Create ;
try
Reg.RootKey:=HKEY_LOCAL_MACHINE;
if Not Reg.OpenKey(‘is_Key’,False) then
Reg.CreateKey(‘is_Key’);
Reg.WriteString('App','ServerName',is_ServerName);
finally
Reg.Free ;
end;

以上代码,当执行到 Reg.CreateKey(‘is_Key’) 语句时,它提示不能创建该键‘is_key’.
我的写法是否有错误。正确的怎样写。比如说我想要在HKEY_LOCAL_MACHINE/SOFTWARE下建立一个键,
该怎样写?
 
//if Not Reg.OpenKey(‘is_Key’,False) then

试改成true;
 
向注册表中写入信息
  在注册表中存储的信息有字符串值、二进制值和十六进制值三种类型。Write系列方法将信息转化
为指定的类型,并将转化后的信息写入注册表。
 1、Write系列方法
   Write系列方法的方法主要有:
     procedure WriteString(const Name, Value: string);
       写入一个字符串值,Name为字符串的名称,Value为字符串值。如果字符串的名称不存在,
       将创建该字符串名称;否则将覆盖原来的字符串值。
     procedure WriteInteger(const Name: string;
Value: Integer);
       写入一个整数值,Name为整数值的名称,Value为整数值。如果整数值的名称不存在,将
       创建该整数值名称;否则将覆盖原来的整数值。
     procedure WriteBool(const Name: string;
Value: Boolean);
       写入一个布尔值,Name为布尔值的名称,Value为布尔值。如果布尔值的名称不存在,将
       创建该布尔值名称;否则将覆盖原来的布尔值。
     procedure WriteBinaryData(const Name: string;
var Buffer;
BufSize: Integer);
       写入二进制值,Name为二进制值的名称,Buffer为包含二进制值的缓冲区,BufSize为缓
       冲大小。如果二进制值的名称不存在,将创建该二进制值名称;否则将覆盖原来的二进制值。
 
   其它方法还有:WriteCurrency、WriteDate、WriteDateTime、WriteFloat、WriteTime。
 2、写入信息一例
   在Delphi数据库应用程序移植到其它没有安装BDE的计算机上时,可以安装BDE;也可以想办法不完全
 安装BDE,自己定制BDE,以减少应用系统的大小。例如当只用TTable控件操作Paradox数据库时,则只要
 Idapi32.dll、Blw32.dll、Idr20009.dll、Fareast.bll、 Usa.bll、Idpdx32.dll六个文件即可。这些
 文件可放在应用程序所在目录,并在注册表指明语言驱动程序所在目录为应用程序所在目录即可。这样
 BDE可由9M减到不到2M。
{ 向注册表中写入信息的例子:为BDE注册必要的信息 }
procedure TForm1.Button2Click(Sender: TObject);
var
DataDirectory : string;
ARegistry : TRegistry;
begin
memo1.lines.add( DateTimeToStr( now ) + ':正注册BDE信息');
{ 取得应用程序所在的目录,也是6个BDE文件所在的目录 }
DataDirectory := ExtractFilePath( Application.ExeName );
ARegistry := TRegistry.Create;//创建一个TRegistry对象实例
with ARegistry do
begin
RootKey := HKEY_LOCAL_MACHINE;//指定根键为HKEY_LOCAL_MACHINE
//打开主键名Software/Borland/BLW32,参数True表示如果
//Software/Borland/BLW32不存在则创建之
if OpenKey( 'Software/Borland/BLW32', True ) then
begin
//写入BDE语言驱动程序所在的目录,即当前程序目录
WriteString( 'BLAPIPATH', DataDirectory );
//写入远东地区语言驱动程序文件名
WriteString( 'LOCALE_LIB0', 'FarEast.bll' );
//写入美国语言驱动程序文件名
WriteString( 'LOCALE_LIB1', 'usa.bll' );
CloseKey;
//关闭主键,同时将信息写入注册表
end;
Destroy;//释放内存
end;

//打开当前目录下的一个Paradox数据表做演示
with table1 do
begin
memo1.lines.add( DateTimeToStr( now ) + ':正打开数据库');
close;
DatabaseName := DataDirectory;
TableName := 'CUSTOMER.DB';
open;
memo1.lines.add( DateTimeToStr( now ) + ':数据库成功打开');
end;
end;
 
Function OpenKey(const Key: string;
CanCreate: Boolean): Boolean;
Key:主键名,是键名全名中除去根键的部分,如Software/Borland/Delphi。
CanCreate:在指定的主键名不存在时,是否允许创建该主键,True表示允许。
返回值True表示操作成功
另外在根键下不可建立主键项
 
多人接受答案了。
 
顶部