【发布时间】:2013-04-30 10:05:14
【问题描述】:
使用 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 访问记录。
非常感谢任何输入。
【问题讨论】:
-
打包/非打包记录我都试过了,没区别。此外,代码是 32 位的(Delphi 和我正在调用的 DLL)。
-
原代码没有使用#pragma pack 1所以我把打包的去掉了。
标签: delphi