Вы можете использовать функцию VarArrayLock
, чтобы получить указатель на данные OleVariant и затем прочитать этот указатель.
проверьте этот код, который использует VarArray
из varByte
элементов.
var
MemoryStream : TMemoryStream;
Data : OleVariant;
DataPtr : Pointer;
begin
MemoryStream:=TMemoryStream.Create;
try
FuncFill(MemoryStream); //Filling the stream
MemoryStream.Seek(0,0);
Data :=VarArrayCreate([0, MemoryStream.Size - 1], varByte);
DataPtr :=VarArrayLock(Data);
try
MemoryStream.ReadBuffer(DataPtr^,MemoryStream.Size); //Get the pointer to the variant variable.
finally
VarArrayUnlock(Data); //when you are done , you must call to VarArrayUnlock
end;
finally
MemoryStream.Free;
end;
end;