yzhshi兄说了写入常量数据或者定长数组的二进制数据,不过如果是动态数据就麻烦点,
不明白的是关于这个问题在网上的资料还不多,我做了一个例子:
implementation
uses registry;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
Var bitmap:TBitmap;
bitmapstream:TMemoryStream;
reg:TRegistry;
p
Byte;
begin
bitmap:=TBitmap.Create;
bitmapstream:=TMemoryStream.Create;
reg:=TRegistry.Create;
try
bitmap.Assign(Image1.Picture.Graphic);
bitmap.SaveToStream(bitmapstream);
bitmapstream.Seek(0,0);
if bitmapstream.Size>0 then
begin
reg.RootKey:=HKEY_CURRENT_USER;
if reg.OpenKey('software/aizb',True) then
begin
GetMem(p,bitmapstream.Size);
try
bitmapstream.Read(p^,bitmapstream.Size);
Reg.WriteBinaryData('bitmap',p^,bitmapstream.Size);
finally
FreeMem(p);
end;
end;
end;
finally
bitmap.Free;
bitmapstream.free;
reg.Free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
Var bitmap:TBitmap;
bitmapstream:TMemoryStream;
reg:TRegistry;
p
Byte;
DataInfo:TRegDataInfo;
begin
bitmap:=TBitmap.Create;
bitmapstream:=TMemoryStream.Create;
reg:=TRegistry.Create;
try
bitmap.Assign(Image1.Picture.Graphic);
bitmap.SaveToStream(bitmapstream);
bitmapstream.Seek(0,0);
if bitmapstream.Size>0 then
begin
reg.RootKey:=HKEY_CURRENT_USER;
if reg.OpenKey('software/aizb',True) then
begin
Reg.GetDataInfo('bitmap',DataInfo);
GetMem(p,DataInfo.DataSize);
Reg.ReadBinaryData('bitmap',p^,DataInfo.DataSize);
bitmapstream.Clear;
bitmapstream.Write(p^,DataInfo.DataSize);
bitmapstream.Seek(0,0);
bitmap.LoadFromStream(bitmapstream);
Image2.Picture.Assign(bitmap);
end;
end;
finally
bitmap.Free;
bitmapstream.free;
reg.Free;
end;
end;
我的主页上有完整的源程序下载:
www.aidelphi.com