gpt4 book ai didi

delphi - Delphi 中等效的 CCHAR 类型是什么?

转载 作者:行者123 更新时间:2023-12-03 15:43:39 24 4
gpt4 key购买 nike

FILE_BOTH_DIR_INFORMATIONShortNameLength 成员结构声明如下:

typedef struct FILE_BOTH_DIR_INFORMATION {
...
CCHAR ShortNameLength;
...
};

来自the explanation of CCHAR type , CCHAR一个 8 位 Windows (ANSI) 字符。那么,它相当于 Delphi 中的 AnsiChar,对吗?然而ShortNameLength的描述FILE_BOTH_DIR_INFORMATION 结构的成员表示,

ShortNameLength specifies the length, in bytes, of the short file name string.”

该语句让我认为 CCHAR 相当于 Delphi 中的 Byte。另一个例子是 SYSTEM_BASIC_INFORMATIONNumberOfProcessors 成员,它在 winternl.h 中声明如下:

typedef struct _SYSTEM_BASIC_INFORMATION {
BYTE Reserved1[24];
PVOID Reserved2[4];
CCHAR NumberOfProcessors;
}

再一次,CCHAR 类型似乎在 Byte 上下文中使用,而不是在 AnsiChar 上下文中使用。

现在,我很困惑,是使用 AnsiChar 还是 Byte 作为 Delphi 中的 CCHAR 等效项。

注意

JEDI Windows API

JwaWinType.pasCCHAR 声明为 AnsiChar

最佳答案

它是一个字节,或者至少,它被用作 1 字节整数。在 C 中,字符可以用于此目的。在 Delphi 中,如果不进行类型转换就无法做到这一点。因此,您可以使用 Char,但随后您需要为其指定值 'A'Chr(65) 来指示字符串65 个字符。现在,那太愚蠢了。 :-)

为了能够将其传递给 API,它必须具有相同的大小。除此之外,被调用者甚至不知道它是如何声明的,因此将其声明为 Delphi 字节是最合乎逻辑的解决方案。您找到的其他声明支持的选择。

关于delphi - Delphi 中等效的 CCHAR 类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13322927/

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