| 
 
 
// Variant --> Stream
 var
 ov: OleVariant;
 ms: TStream;
 p: Pointer;
 begin
 ov := dmMain.ComConnection.AppServer.TimeZone;
 ms := TMemoryStream.Create;
 ms.Position := 0;
 p := VarArrayLock(ov);
 ms.Write(p ^, VarArrayHighBound(ov, 1));
 //is it the best way to get the Variant's length?
 VarArrayUnlock(ov);
 
 ms.Position := 0;
 ...ms.Free;
 end;
 
 // Stream --> Variant
 
 function TTCanteenSvr.Get_TimeZone: OleVariant;
 var
 AStream: TStream;
 MyBuffer: Pointer;
 begin
 try
 AStream  := TFileStream.Create(, fmOpenRead);
 Result   := VarArrayCreate([0, AStream.Size - 1], VarByte);
 MyBuffer := VarArrayLock(Result);
 AStream.ReadBuffer(MyBuffer^, AStream.Size);
 VarArrayUnlock(Result);
 finally
 AStream.Free;
 end;
 
 //--------------------------------------------------------------------
 //notice: I have asked this question on BDN, and David Lewis told me
 //        to use the function VarArrayLock.
 
 
 
   
   
    | 
         
          | Bewerten Sie diesen Tipp: |  |  |