![]() |
Datenbuffer als OleVariant übergeben ?
Moin moin,
ich habe aus der SpeechAPI ein Objekt (SpMemoryStream), welches als Buffer ein OleVariant übergeben haben will, um Daten auszulesen: function TSpCustomStream.Read(out Buffer: OleVariant; NumberOfBytes: Integer): Integer; Als Datanbuffer habe ich z.B. ein array of Byte, aber wie bekomme ich das der Read-Methode übergeben? Schönen Dank für's Lesen Gruß Phunkafizer |
Re: Datenbuffer als OleVariant übergeben ?
Die Read()-Funktion liefert dir in einem OleVariant ja Daten zurück.
Also brauchst du erstmal nur eine Variable bereitstellen:
Delphi-Quellcode:
Dann musst du herausfinden, wie die Daten in xbuffer herauszuholen sind.
var
xbuffer : OleVariant; begin .. SpMemoryStream.Read(xbuffer, 1000); // die Daten sind jetzt in xbuffer Wahrscheinlich handelt es sich um ein Variant-Array vom Typ varByte.
Delphi-Quellcode:
Wenn dem so ist, dann kannst du mit folgender Funktion die Daten rausholen:
if VarType(xbuffer) = (varByte or varArray) then
ShowMessage('Gut! Array von varByte vorhanden');
Delphi-Quellcode:
Wenn dir der String nicht gefällt, kannst du auch ein dynamisches array of Byte verwenden.
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; In der Zeile mit dem *** muss dann aber Move(data^, Result[0], len) stehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz