可以给个例子吗?

解决方案 »

  1.   

    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;
      

  2.   

    将需要的Component以流的形式保存到string或文件中
    使用时从文件中读取出来并显示以及访问
      

  3.   

    看你要序列化什么,序列化成什么吧,WriteComponent的局限是只能用于TComponent子类。DELPHI这方面目前比较欠缺。如果想弄成XML的话,我暂时是协助remobjects的TROComplexType来做的,它有个ObjectToXML和XMLToObject的方法方便转换。或者自己写。ps. to 5楼:还有个更“怪”的说法叫“串行化”
      

  4.   

    自己做工具类!
    实体类一般都类似于POJO性质的,无侵入性且基类一般都为Object,这时如果在客户端上传至业务层时,就需要用RTTI来实现ObjectToXML和XMLToObject这些功能!
    不管名字叫序列化还是串行化,个人感觉都很形象!毕竟是在网络上传输都需要化整为零,排队依次向目的地前进!