delphi如何进行对象序列化和反序列化? 可以给个例子吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 function ComponentToStr(AComponent: TComponent): string;var BinStream: TMemoryStream; StrStream: TStringStream; s: string;begin BinStream := TMemoryStream.Create; try StrStream := TStringStream.Create(s); try BinStream.WriteComponent(AComponent); BinStream.Seek(0, soFromBeginning); ObjectBinaryToText(BinStream, StrStream); StrStream.Seek(0, soFromBeginning); Result := StrStream.DataString; finally StrStream.Free; end; finally BinStream.Free end;end;function StrToComponent(const Value: string; Instance: TComponent): 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(Instance); finally BinStream.Free; end; finally StrStream.Free; end;end; 将需要的Component以流的形式保存到string或文件中使用时从文件中读取出来并显示以及访问 看你要序列化什么,序列化成什么吧,WriteComponent的局限是只能用于TComponent子类。DELPHI这方面目前比较欠缺。如果想弄成XML的话,我暂时是协助remobjects的TROComplexType来做的,它有个ObjectToXML和XMLToObject的方法方便转换。或者自己写。ps. to 5楼:还有个更“怪”的说法叫“串行化” 自己做工具类!实体类一般都类似于POJO性质的,无侵入性且基类一般都为Object,这时如果在客户端上传至业务层时,就需要用RTTI来实现ObjectToXML和XMLToObject这些功能!不管名字叫序列化还是串行化,个人感觉都很形象!毕竟是在网络上传输都需要化整为零,排队依次向目的地前进! 中秋节快乐,吟诗一首 在TMemo控件中输入备注信息为什么在TDBGrid中无法显示 怎样用delphi在dll中加入sql2000或其他数据表并调用数据表 调用动态连接记转的问题 对vcl库底层机制一些不明白的地方1 quickreport打印问题 delphi调用存储过程的错误 TStrings和TStringList的问题(一定给分) 为什么会有这样的错?求救!!! 关于结构的问题,请指教! 急切…… 挤进CSDN前1000,散分
var
BinStream: TMemoryStream;
StrStream: TStringStream;
s: string;
begin
BinStream := TMemoryStream.Create;
try
StrStream := TStringStream.Create(s);
try
BinStream.WriteComponent(AComponent);
BinStream.Seek(0, soFromBeginning);
ObjectBinaryToText(BinStream, StrStream);
StrStream.Seek(0, soFromBeginning);
Result := StrStream.DataString;
finally
StrStream.Free;
end;
finally
BinStream.Free
end;
end;function StrToComponent(const Value: string;
Instance: TComponent): 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(Instance);
finally
BinStream.Free;
end;
finally
StrStream.Free;
end;
end;
使用时从文件中读取出来并显示以及访问
实体类一般都类似于POJO性质的,无侵入性且基类一般都为Object,这时如果在客户端上传至业务层时,就需要用RTTI来实现ObjectToXML和XMLToObject这些功能!
不管名字叫序列化还是串行化,个人感觉都很形象!毕竟是在网络上传输都需要化整为零,排队依次向目的地前进!