关于在注册表中读取二进制数的问题(100分)

  • 主题发起人 主题发起人 zhyd
  • 开始时间 开始时间
Z

zhyd

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠:
这是我的代码:var
regz:Tregistry;
buf:pchar;
Begin
regz:=tregistry.create;
getmem(buf,4);

try
regz.rootkey:=HKEY_CURRENT_USER;
if (regz.openkey('Software/Microsoft/Windows/CurrentVersion/Policies/Explorer',True))=true then
begin
regz.ReadBinaryData('NoRecentDocsMenu',Buf[0],4);
Application.MessageBox(buf,'',MB_OK);
end;
finally
regz.closekey;
regz.free;
end;
end;

可是,不管NoRecentDocsMenu是01 00 00 00,还是00 00 00 00,MessageBox显示出来的值都是空值,
请问我错在哪里了??在读出这个值,应该怎么写??
 
我试了一下,好得很,一点问题都没有,但MessageBox确实显示为空,因为#1是不可
打印字符,你要改用:
Application.MessageBox(PChar(IntToStr(Ord( Buf[0]))),'',MB_OK);

var
regz:Tregistry;
buf:pchar;
Begin
regz:=tregistry.create;
getmem(buf,4);

try
regz.rootkey:=HKEY_CURRENT_USER;
if (regz.openkey('Software/Microsoft/Windows/CurrentVersion/Policies/Explorer',True))=true then
begin
regz.ReadBinaryData('Test',Buf[0],4);
Application.MessageBox(buf,'',MB_OK);
Application.MessageBox(PChar(IntToStr(Ord( Buf[0]))),'',MB_OK);
end;
finally
regz.closekey;
regz.free;
end;

end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
regz:Tregistry;
buf:pchar;
s:string;
i:integer;
Begin
regz:=tregistry.create;
getmem(buf,4);

try
regz.rootkey:=HKEY_CURRENT_USER;
if (regz.openkey('Software/Microsoft/Windows/CurrentVersion/Policies/Explorer',True))=true then
begin
regz.ReadBinaryData('NoRecentDocsMenu',Buf[0],4);
s:='';
for i:=0 to 3 do
s:= s + format('%2d',[Ord( Buf)]);
showmessage(s);
end;
finally
regz.closekey;
regz.free;
end;
end;

二进制数据你需要显示干什么?
 
接受答案了.
 
后退
顶部