【发布时间】:2019-10-27 10:00:49
【问题描述】:
我正在使用 Delphi XE3。我只是想知道 Delphi 字符串函数,比如 Windows SDK,是否有两个版本,一个用于 AnsiString,一个用于 UnicodeString?
例如,SetString 过程:
procedure SetString(var S: String; Buffer: PChar; Length: Integer);
是否有两个版本,一个是:
procedure SetString(var S: AnsiString; Buffer: PAnsiChar; Length: Integer);
另一个版本是:
procedure SetString(var S: UnicodeString; Buffer: PUnicodeChar; Length: Integer);
我在Delphi源码中搜索过,但在system.pas中只找到如下函数:
procedure _SetString(s: _PShortStr; buffer: _PAnsiChr; len: Byte);
好像System.pas只定义了Ansi字符串版本?
【问题讨论】:
-
我认为你问错了问题。您的意思是询问 AnsiString 和 UnicodeString。 WideString 是 COM BSTR 类型的 Delphi 包装器。我希望你没有使用 WideString,除非你在做 COM 互操作。
-
@DavidHeffernan,你是对的。我的意思是 UnicodeString,我把它和 C++ 的 Widechar 混淆了。
-
C++ 没有宽字符类型。 C++ 中的字符类型有 char 和 wchar_t。