zoukankan      html  css  js  c++  java
  • 对象持久化

     

    网上查了下,貌似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

  • 相关阅读:
    小清新数论题泛做
    近日模考理数压轴题简记
    带边数的无向连通图计数
    ZJOI2019 简记
    SDOI2019 R2D2 题解
    [补档题解]后缀树节点数
    [BJ United Round 3] 押韵
    高维 DFT 算法(FWT 快速沃尔什变换)
    SDOI2019 R2D1 题解
    LOJ#6713. 「EC Final 2019」狄利克雷 k 次根 加强版
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2035704.html
Copyright © 2011-2022 走看看