你要知道你存放内容的大小,var 
  F:TfileStream;
  i: integer;
begin
  F:=TfileStream.Create(...;
  For i:= 0 to vararraycount-1 do
     F.write(Vararray[i],Size)//这里的大小你要填进去
  F.free;
end;

解决方案 »

  1.   

    OleVariant的数组?
    它可能不是线性的,因为每个元素又可能是数组,你总要有个转换规则吧.
      

  2.   

    TClientDataNode = class
    public
      TableName : String;
      ClientDataSet : TClientDataSet;
    end;我做了一个 TClientDataNode 的TList列表,我想把这个存起来。
    VarArrayCreate([0, (Count * 2 - 1)], VarVariant);
    一个 Node 占两个,第一个存 TableName,第二个存 ClientDataSet.Data
    怎么做呢?
    我要把这个东西存到一个文件中
      

  3.   

    给你一段hubdog的代码
    function FileToVariant(FileName: String): OleVariant; 
    var 
      AStream: TFileStream; 
      MyBuffer: Pointer; 
    begin 
      AStream:=TFileStream.create(FileName,fmOpenRead); 
      try 
        aStream.Seek(0, soFromBeginning); 
        Result:=VarArraycreate([0, AStream.size-1], VarByte); 
        MyBuffer:=VarArrayLock(Result); 
        AStream.ReadBuffer(MyBuffer^, AStream.Size); 
        VarArrayUnlock(Result); 
      finally 
        AStream.Free; 
      end; 
    end; 
    procedure VariantToFile(FileName: String; var AVariant: OleVariant); 
    var 
      AStream: TFileStream; 
      MyBuffer: Pointer; 
      Size: Integer; 
    begin 
      AStream:=TFileStream.create(FileName,fmCreate); 
      try 
        aStream.Seek(0, soFromBeginning); 
        Size:=VarArrayHighBound(AVariant,1)+VarArrayLowBound(AVariant,1)+1; 
        MyBuffer:=VarArrayLock(AVariant); 
        AStream.WriteBuffer(MyBuffer^, Size); 
        VarArrayUnlock(AVariant); 
      finally 
        AStream.Free; 
      end; 
    end; 
     
      

  4.   

    black_fox(black_fox)说的可以把VarArray的东西存进去,但是我的 VarArray的每一个元素都是OleVariant类型的。我看存进去的好像都是地址,每个元素都没存进去