gpt4 book ai didi

delphi - 从 Delphi 访问包含 VT_RECORD 的 VT_ARRAY 的 OleVariant

转载 作者:行者123 更新时间:2023-12-03 02:58:52 26 4
gpt4 key购买 nike

使用 Delphi,我需要访问一个包含数组中的一条或多条记录的 OleVariant。

我调用的方法返回VT_RECORD的VT_ARRAY,记录本身定义为:

struct StreamTimeInfo {
unsigned int PID;
LONGLONG PTS;
LONGLONG TimeStamp;
};

我的代码是这样的:

procedure Test;
type
TStreamInfo = record
PID: Cardinal;
PTS: Int64;
TimeStamp: Int64;
end;
var
Value: OleVariant
StreamTime: TStreamInfo;
begin
GetValue(Value); // Value holds a VT_ARRAY of VT_RECORD

// How should I access the array of records in Delphi?
// I've tried this to get to the first element:
StreamTime := TStreamInfo(TVarData(Value).VPointer^);
end;

我不明白如何从 Delphi 访问记录。

非常感谢您的任何意见。

最佳答案

我以前从未这样做过,但我认为这应该可行。

type 
TStreamInfoArray = array [0..MaxArrayCount-1] of TStreamInfo;
PStreamInfoArray = ^TStreamInfoArray;
var
Value: Variant;
p: PStreamInfoArray;
StreamInfo: TStreamInfo;
begin
GetValue(Value);
p := PStreamInfoArray(VarArrayLock(Value));
try
StreamInfo := p^[Index];
finally
VarArrayUnlock(Value);
end;
end;

关于delphi - 从 Delphi 访问包含 VT_RECORD 的 VT_ARRAY 的 OleVariant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16297253/

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