1 关于注册表问题,怎样读出二进制值?在线!
在 HKEY_LOCAL_MACHINE\SOFTWARE\P 分支中键值PAS(二进制值)。把键值PAS(二进制值)显示在label1.caption里。举例说明。2 怎样判断一个键值是什么类型的?怎样判断一个键值是字符串值
怎样判断一个键值是二进制值
怎样判断一个键值是DWORD值请举例说明
在 HKEY_LOCAL_MACHINE\SOFTWARE\P 分支中键值PAS(二进制值)。把键值PAS(二进制值)显示在label1.caption里。举例说明。2 怎样判断一个键值是什么类型的?怎样判断一个键值是字符串值
怎样判断一个键值是二进制值
怎样判断一个键值是DWORD值请举例说明
可以用reg.查看
当键入.的时候系统会把可能有的属性显示出来,好像是readbri什么的,自己看看吧!
reg.readstring('xxx');//字符串数据
reg.ReadCurrency('xxxx');//固计这个可能是DWORD值
var
reg: TRegistry;
info: TRegDataInfo;
buf: PByteArray;
bufSize, i: Integer;
s: string;
begin
reg := TRegistry.Create;
try
reg.RootKey := HKEY_LOCAL_MACHINE;
if reg.OpenKey('\Software\P', True) then
begin
reg.GetDataInfo('PAS', info);
case info.RegData of
rdString: // 字符串
begin
end;
rdInteger: // DWORD
begin
end;
rdBinary: // 二进制
begin
bufSize := info.DataSize;
if bufSize > 0 then begin
buf := AllocMem(bufSize);
reg.ReadBinaryData('PAS', buf^, bufSize);
s:= '';
for i:=0 to bufSize-1 do s:=s+IntToHex(buf[i],2)+' ';
if bufSize > 0 then Delete(s, Length(s), 1);
Label1.Caption := s;
FreeMem(buf, bufSize);
end;
end;
end;
reg.CloseKey;
end;
finally
reg.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
reg: TRegistry;
bitmap: TBitmap;
buffer:PByte;
bufSize: Integer;
begin
reg := TRegistry.Create;
try
reg.RootKey := HKEY_LOCAL_MACHINE;
if reg.OpenKey('\Software\P', True) then
begin
bitmap:=TBitmap.create;
bitmap.LoadformStream(S);//S为一个图象流
bufSize:=S.size;
GetMem(Buffer,buffersize);
S.write(Buffer^,buffersize);
reg.writebinarydata('PAS', buffer^, bufSize);
reg.CloseKey;
Freemem(buffer);
bitmap.free;
end;
finally
reg.Free;
end;
end;
没有试验,但道理是这样的!
看来我学得不好,原来readineger是用来读DWORD的,学了一课!