gpt4 book ai didi

delphi - 如何为来自 TStream 的 Olevariant 变量赋值?

转载 作者:行者123 更新时间:2023-12-01 22:55:54 31 4
gpt4 key购买 nike

我需要从 Stream 中读取数据并将读取的缓冲区放入 OleVariant (VarArray) 变量中。

var
MemoryStream : TMemoryStream;
Data : OleVariant;
begin
MemoryStream:=TMemoryStream.Create;
try
FuncFill(MemoryStream); //Filling the stream
MemoryStream.Seek(0,0);
MemoryStream.Read(Data, MemoryStream.Size);//this line lock the app, I need allocate the memory for the OleVariant variable?
finally
MemoryStream.Free;
end;

end;

如何将 TMemoryStream 中的读取值分配给 olevariant 变量?

我使用的是delphi 5。

最佳答案

您可以使用VarArrayLock函数获取指向 OleVariant 数据的指针,然后读取该指针。

检查此代码是否使用 varByte 元素的 VarArray

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;

关于delphi - 如何为来自 TStream 的 Olevariant 变量赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4225970/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com