was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews
 sonstiges ¦  tutorials ¦  Add&Win Gewinnspiel

Tips (1548)

Dateien (137)
Datenbanken (90)
Drucken (35)
Grafik (116)
IDE (21)
Indy (5)
Internet / LAN (131)
IntraWeb (0)
Mathematik (76)
Multimedia (45)
Oberfläche (107)
Objekte/
ActiveX (51)

OpenTools API (3)
Sonstiges (127)
Strings (83)
System (268)
VCL (243)

Tips sortiert nach
Komponente


Tip suchen

Tip hinzufügen

Add&Win Gewinnspiel

Werbung

17 Visitors Online


 
...Variant zu Stream konvertieren?
Autor: ari
Homepage: http://borland.mblogger.cn/aiirii
[ Tip ausdrucken ]  

Tip Bewertung (22):  
     


// 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:

dürftig
ausgezeichnet


Copyright © by SwissDelphiCenter.ch
All trademarks are the sole property of their respective owners