我正在使用德尔福功能
StringCodePage
我在 COM 函数返回的字符串上调用它(Acrobat Annotation getContents - 请参阅我的其他帖子),它返回 0。
什么是0?安西?
我正在使用德尔福功能
StringCodePage
我在 COM 函数返回的字符串上调用它(Acrobat Annotation getContents - 请参阅我的其他帖子),它返回 0。
什么是0?安西?
代码页 0 是 CP_ACP,当前的 Windows ANSI 代码页。
从 Windows.pas:
{$EXTERNALSYM CP_ACP}
CP_ACP = 0; { default to ANSI code page }
来自MSDN:
CP_ACP
当前系统 Windows ANSI 代码页。这个值在不同的计算机上可能不同,即使在同一个网络上。它可以在同一台计算机上更改,从而导致存储的数据不可恢复地损坏。此值仅供临时使用,如果可能,应使用 UTF-16 或 UTF-8 进行永久存储。
唯一StringCodePage()
可以返回 0 的方法是传入一个空白,从而返回其编译时代码页亲和性,或者传入一个将代码页 0 分配给其有效负载AnsiString
的非空白。AnsiString
DelphiWideString
用于 COM 字符串,StringCodePage()
除了 plain 之外的任何字符串类型都不会返回 0 AnsiString
。在 D2009 中,RTL 没有很好地将操作系统的实际运行时代码页存储到AnsiString
有效负载中,因此它们通常包含 0 的编译时代码页亲和度。这在字符串转换方面是有用的,但不是很好明确的。这在后来的 Delphi 版本中得到了修复,因此AnsiString
有效负载现在包含在运行时确定的实际操作系统代码页。