【发布时间】:2012-11-10 14:32:45
【问题描述】:
FILE_BOTH_DIR_INFORMATION 结构的 ShortNameLength 成员声明如下:
typedef struct FILE_BOTH_DIR_INFORMATION {
...
CCHAR ShortNameLength;
...
};
从the explanation of CCHAR type 开始,CCHAR 是一个 8 位 Windows (ANSI) 字符。所以,它相当于Delphi中的AnsiChar,对吧?然而,FILE_BOTH_DIR_INFORMATION 结构的成员ShortNameLength 的描述说,
“ShortNameLength 指定短文件名字符串的长度,以字节为单位。”
这句话让我觉得 CCHAR 等价于 Delphi 中的 Byte。另一个例子是SYSTEM_BASIC_INFORMATION 的NumberOfProcessors 成员,它在winternl.h 中声明如下:
typedef struct _SYSTEM_BASIC_INFORMATION {
BYTE Reserved1[24];
PVOID Reserved2[4];
CCHAR NumberOfProcessors;
}
再一次,CCHAR 类型似乎用于Byte 上下文,而不是AnsiChar 上下文。
现在,我很困惑,是在 Delphi 中使用 AnsiChar 还是 Byte 作为 CCHAR 等效项。
注意
JEDI Windows API 中的JwaWinType.pas 将CCHAR 声明为AnsiChar。
【问题讨论】:
标签: delphi