孤独的猫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

网上查了下,貌似WriteComponentResFile,ReadComponentResFile可以,但是必须是一个TComponet的对象,我要串行化一个OleVariant的对象,大大们,怎么做?

要持久对象,必须继承TPersistent....

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;

 

使用之前注册以下:   
      RegisterClasses

posted on 2010-05-15 09:24  孤独的猫  阅读(201)  评论(0编辑  收藏  举报