在Windows.pas
中,有:
LARGE_INTEGER = record
case Integer of
0: (
LowPart: DWORD;
HighPart: Longint);
1: (
QuadPart: LONGLONG);
end;
TLargeInteger = Int64;
我看到几个最初声明为LARGE_INTEGER
的Windows函数和结构成员已被翻译为TLargeInteger
,例如:
function QueryPerformanceCounter(var lpPerformanceCount: TLargeInteger): BOOL;
stdcall;
另一个例子是:
WIN32_STREAM_ID = record
dwStreamId : DWORD;
dwStreamAttributes: DWORD;
Size : TLargeInteger;
dwStreamNameSize : DWORD;
cStreamName : array[0..0] of WCHAR;
end;
对于Windows头文件中的每个函数参数和结构成员,TLargeInteger
可以替代LARGE_INTEGER
吗?
答案 0 :(得分:8)
您始终可以在API翻译中安全地使用这两种类型。虽然,显然,一旦为特定功能选择了一种类型,只要你调用该功能,就必须坚持使用该类型。
TLargeInteger
可以更轻松地分配值,因为无需引用记录字段。 LARGE_INTEGER
可以更轻松地分为低位和高位32位部分。 既然编译器对64位整数有很好的支持,那么使用TLargeInteger
可能更有意义。因为通常不需要将64位整数分成低位和高位。但是当编译器无法处理64位整数类型时,没有其他选项可以使用64位整数。