诚征跟类型OLEVariant有关的所有信息;
定义;
使用例子;
出错处理...

解决方案 »

  1.   

    http://borland.mblogger.cn/aiirii/posts/12204.aspx在Com, Dcom, Com+中經常要用到variant, 而在delphi 中的文件操作之類中, 更多的用到Stream, 有時, 需要適當的互換!
      

  2.   

    RE: 怎样在客户端对三层中的文件进行读写操作 
    ID=2296087, 发贴富翁: Jiams, 发贴时间:2003-11-15 11:42:00type 
      TByteArray = array of byte; //******************************************************************// 
    // OleVariantToStream                                              * 
    //                                                                 * 
    // Inserts an OleVariant to a TStream (COM Compatible)             * 
    //****************************************************************** 
    procedure OleVariantToStream(var Input: OleVariant; Stream: TStream); 
    var 
    pBuf: Pointer; 
    begin 
      pBuf := VarArrayLock(Input); 
      Stream.Write(TByteArray(pBuf^), Length(TByteArray(Input))); 
      VarArrayUnlock(Input); 
    end; 
    //****************************************************************** 
    // StreamToOleVariant                                              * 
    //                                                                 * 
    // Copies a TStream contents of Count bytes based on the 
       current Position                                                * 
    // to an OleVariant (COM Compatible)                               * 
    //****************************************************************** function StreamToOleVariant(Stream: TStream; Count: Integer): OleVariant; 
    var 
    pBuf: Pointer; 
    begin 
      Result := VarArrayCreate([0, Count-1], varByte); 
      pBuf := VarArrayLock(Result); 
      Stream.Read(TByteArray(pBuf^), Length(TByteArray(Result))); 
      VarArrayUnlock(Result); 
    end; procedure StoreFile(FileContents: OleVariant); 
    var 
    FS: TFileStream; 
    begin 
      FS := TFileStream.Create('some file name', fmCreate or fmOpenWrite or fmShareExclusive); 
      OleVariantToStream(FileContents, FS); 
      FS.Free; 
    end; procedure SendFileToServer(FileName: string); 
    var 
    FS: TFileStream; 
    begin 
      FS := TFileStream.Create(FileName, fmOpenRead or fmShareCompatible); 
      MyServer.StoreFile(StreamToOleVariant(FS, FS.Size)); 
      FS.Free; 
    end; 
      

  3.   

    做三层时;将数据类型定义为Olevariant可以直接将记录集返回;
    var
    OleVariant1 : OleVariant;
    OleVariant2 : Olevariant;
    I : integer;
    begin
      DataSetProvider1.DataSet := Query1;
      Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Text := 'SELECT ...';
      Query1.Open;
      OleVariant1 := DataSetProvider1.Data; //将OleVariant1作为参数返回
      
      //返回参数数组
      OleVariant2 := VarArrayCreate([0,Query1.recordCount - 1],VarOleStr);
      while not Query1.eof do
      begin
       OleVariant[I] := Query1.fields[0].asstring;
       Inc(I)
      end;
    end;
      

  4.   

    将记录集作为结果返回:
    http://www.delphibbs.com/delphibbs/dispq.asp?lid=430771
      

  5.   

    :如何在midas通过接口传递Bindary数据 
    http://www.delphibbs.com/delphibbs/dispq.asp?lid=270559
    //
    http://www.delphibbs.com/delphibbs/dispq.asp?lid=1621372