在Delphi 2009和更高版本中,字符串类型隐式等于UnicodeString类型。我现在的纪律是为我最近的基本单位使用显式UnicodeString类型,以消除混乱。是否有一个编译器指令可以在声明的单元中使字符串 UnicodeString? 最佳答案 如果您希望有一个可以在Unicode和非Unicode Delphi下编译的代码库,则应了解string每次出现的用法-是否将字符串传递给Windows API?您要调用“ Delphi本机”版本,还是要显式调用Ansi版本或Wide版本?它是与RTL / VCL代码交换的字符串吗?它是数据库中的字符串吗?是否需要支持Unicode,Ansi或任何其他编码?等等。以我的经验,与Delphi RTL / VCL和WinAPI(如Windows.pas等声明)交互的代码最好与string一起使用,因为它透明地表示AnsiString或UnicodeString,这取决于所使用的编译器。如果字符串的特定用途使区分Ansi或Unicode重要,请显式使用AnsiSting或UnicodeString。这给较旧的Delphi带来了一个问题,因为它们没有UnicodeString。实际上,可以通过在一些中央单元中自己定义UncodeString来解决此问题:{$IF NOT DECLARED(UnicodeString)}type UnicodeString = WideString;{$IFEND}另一方面,如果您希望将代码配置为使用Ansi或Unicode,则应尽可能多地使用自己的字符串类型。定义如下:{$IFDEF MY_APP_USE_UNICODE}type AppString = UnicodeString;{$ELSE}type AppString = AnsiString;{$ENDIF}..并在您自己的代码中使用它。关于delphi - 使字符串<> UnicodeString的编译器指令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3670624/
10-12 12:51