Delphi 11中GetLastError提示Cardinal类型:是否引用错误数据类型?
Delphi 11 Update 2中GetLastError提示Cardinal类型的疑问解答
Cardinal类型的来源
DWORD是Cardinal的类型别名,在Winapi.Windows单元里明确定义了type DWORD = Cardinal;。IDE的代码提示只是把DWORD展开成了它的底层基础类型,所以你看到的Cardinal其实就是Winapi.Windows里GetLastError声明中DWORD的实际对应类型。
是否需要提交给Embarcadero支持
不需要,这不是bug。IDE的代码提示机制会自动展开类型别名,显示其基础类型,属于正常行为,没有功能层面的问题。
你遗漏的点
你没注意到Delphi对Windows API类型的别名映射逻辑——DWORD并非Delphi的原生基础类型,只是Cardinal的别名,IDE在代码补全时会显示这个底层类型。
错误数据类型引用的问题
不存在错误引用的问题:
- Windows平台下,
Integer是32位有符号整数,Cardinal是32位无符号整数,而GetLastError返回的错误码本身都是非负数值,两种声明在实际使用中不会有兼容性问题。 - System单元里的
GetLastError是跨平台封装的版本,非Windows平台会用Integer类型;Winapi.Windows里的版本则严格对应Windows API的原生声明。
内容的提问来源于stack exchange,提问作者complete_stranger
相关产品推荐
相关产品推荐

