求助,关于编程注册表问题!(20分)

  • 主题发起人 主题发起人 bluehouse
  • 开始时间 开始时间
B

bluehouse

Unregistered / Unconfirmed
GUEST, unregistred user!
对于注册表:若该二进制键值第一个值为"50"(一共是50 01 00 20),则checkbox4.checked:=true,下面代码怎么错了,不显示True
reg.RootKey:=HKEY_CLASSES_ROOT;
if reg.OpenKey('CLSID/{645FF040-5081-101B-9F08-00AA002F954E}/ShellFolder',true)then
reg.ReadBinaryData('Attributes',buf,4);
if Buf[1]=50 then
begin
checkbox4.checked:=true;
end;
end
 
是否應該改為buf[0]=50 then?
 
看你buf 如何定义,按道理讲应该是 buf[0]
你可以自己测试一下:
显示一下具体得到的值,
showmessage(inttostr(buf[...]));
无否是 buf[0],buf[1],...
 
var
Reg:TRegistry;
Buf:array[0..4] of integer;
begin
Reg:=TRegistry.Create;
try
Reg.RootKey:=HKEY_CLASSES_ROOT;
if Reg.OpenKey('/CLSID/{645FF040-5081-101B-9F08-00AA002F954E}/ShellFolder',False) then
Reg.ReadBinaryData('Attributes',Buf,4);
if Buf[0]=80 then
//注意:binally的50十进制是80
Checkbox4.checked:=true;
finally
Reg.CloseKey;
Reg.Free;
end;
end;
 
var
Reg:TRegistry;
Buf:array[0..4] of Byte;
begin
Reg:=TRegistry.Create;
try
Reg.RootKey:=HKEY_CLASSES_ROOT;
if Reg.OpenKey('/CLSID/{645FF040-5081-101B-9F08-00AA002F954E}/ShellFolder',False) then
Reg.ReadBinaryData('Attributes',Buf,4);
if Buf[0]=$50 then
Checkbox4.checked:=true;
finally
Reg.CloseKey;
Reg.Free;
end;
end;
 
上面两位讲得不错 ,不应该是 50 ,应该是 $50(80)。完全同意。
 
呵呵,二进制数据吗?我只写过,没读过
 
多人接受答案了。
 
后退
顶部