Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Datenbuffer als OleVariant übergeben ?

  Alt 5. Jun 2008, 17:31
Die Read()-Funktion liefert dir in einem OleVariant ja Daten zurück.
Also brauchst du erstmal nur eine Variable bereitstellen:
Delphi-Quellcode:
var
   xbuffer : OleVariant;
begin
  ..
  SpMemoryStream.Read(xbuffer, 1000);
  // die Daten sind jetzt in xbuffer
Dann musst du herausfinden, wie die Daten in xbuffer herauszuholen sind.
Wahrscheinlich handelt es sich um ein Variant-Array vom Typ varByte.
Delphi-Quellcode:
if VarType(xbuffer) = (varByte or varArray) then
   ShowMessage('Gut! Array von varByte vorhanden');
Wenn dem so ist, dann kannst du mit folgender Funktion die Daten rausholen:
Delphi-Quellcode:
function VarByteArrayToString(v:Variant):string;
var
   len : Integer;
   data : Pointer;
begin
   Assert(VarType(V) = varByte or varArray);
   Assert(VarArrayDimCount(V) = 1);

   len := VarArrayHighBound(v,1)-VarArrayLowBound(v,1)+1;
   SetLength(result, len);

   data := VarArrayLock(v);
   try
      Move(data^, Result[1], len); // ***
   finally
      VarArrayUnlock(v);
   end;
end;
Wenn dir der String nicht gefällt, kannst du auch ein dynamisches array of Byte verwenden.
In der Zeile mit dem *** muss dann aber Move(data^, Result[0], len) stehen.
Andreas
  Mit Zitat antworten Zitat