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.