如何将一个对象的非文本属性信息保存再文件或数据库中?(50分)

  • 主题发起人 数据狂
  • 开始时间

数据狂

Unregistered / Unconfirmed
GUEST, unregistred user!
我要将一些对象的非文本信息(如Label的Font等)保存起来?读出时可以重新使用?
我想使用二进制信息保存再数据库的二进制字段中,取出后赋值给同类型的变量,
就象FoxBase的save命令一样将变量存入文件中。
 
可以用TFileStream
TFileStream.WriteComponent
TFileStream.WriteComponentres
可以把一个TLabel或者TEdit之类的Component写入流中。
最后可以TFileStream.SaveToFile将其保存入文件。
Delphi由例子如下:
This example shows how to use the built-in VCL component streaming support to convert any component into a string and convert that string back into a component.

function ComponentToString(Component: TComponent): string;

var
BinStream:TMemoryStream;
StrStream: TStringStream;
s: string;
begin
BinStream := TMemoryStream.Create;
try
StrStream := TStringStream.Create(s);
try
BinStream.WriteComponent(Component);
BinStream.Seek(0, soFromBeginning);
ObjectBinaryToText(BinStream, StrStream);
StrStream.Seek(0, soFromBeginning);
Result:= StrStream.DataString;
finally
StrStream.Free;

end;
finally
BinStream.Free
end;
end;

function StringToComponent(Value: string): TComponent;
var
StrStream:TStringStream;
BinStream: TMemoryStream;
begin
StrStream := TStringStream.Create(Value);
try
BinStream := TMemoryStream.Create;
try
ObjectTextToBinary(StrStream, BinStream);
BinStream.Seek(0, soFromBeginning);
Result := BinStream.ReadComponent(nil);

finally
BinStream.Free;
end;
finally
StrStream.Free;
end;
end;
 

Similar threads

顶部