【发布时间】:2012-10-06 20:25:41
【问题描述】:
我正在使用 Windows API,并且必须在 Delphi record 中重新创建 a structure。我想我记错了,但这个有点令人困惑,我需要确保我做对了。
这是原始的 C++ 结构:
typedef struct RETRIEVAL_POINTERS_BUFFER {
DWORD ExtentCount;
LARGE_INTEGER StartingVcn;
struct {
LARGE_INTEGER NextVcn;
LARGE_INTEGER Lcn;
} Extents[1];
} RETRIEVAL_POINTERS_BUFFER, *PRETRIEVAL_POINTERS_BUFFER;
请注意,此结构中有一个数组结构。这就是我迷路的地方。如果我没记错的话,Delphi 版本应该是这样的:
TExtent = record
NextVcn: Integer;
Lcn: Integer;
end;
TExtents = array of TExtent;
PRETRIEVAL_POINTERS_BUFFER = ^TRETRIEVAL_POINTERS_BUFFER;
TRETRIEVAL_POINTERS_BUFFER = record
ExtentCount: DWORD;
StartingVcn: Integer;
Extents: TExtents;
end;
当我在 Windows API 中使用此结构时,它似乎确实有效。但是,由于结构内部的这个结构数组,我有点犹豫我是否正确地做到了这一点。这看起来对吗?
【问题讨论】:
-
几乎所有内容都已经翻译好了
by JEDI。 -
@TLama,我认为这实际上可能是我的答案,只要“几乎”不是一个因素。
-
我的意思是几乎所有来自 Windows API 的东西。你需要什么
is of course complete那里。
标签: delphi winapi struct delphi-xe2 code-conversion