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)); //這句可否改進? 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;