在 Delphi 2010 下(也可能在 D2009 下),默认字符串类型是 UnicodeString。
但是如果我们声明...
const
s :string = 'Test';
ss :string[4] = 'Test';
...那么第一个字符串 s 如果声明为 UnicodeString,但第二个字符串 ss 声明为 AnsiString强>!
我们可以检查一下:SizeOf(s[1]);
将返回尺寸 2 和 SizeOf(ss[1])
;将返回尺寸 1。
如果我声明...
var
s :string;
ss :string[4];
...比我希望的 ss 也是 UnicodeString 类型。
- 我如何告诉 Delphi 2010 这两个字符串都应该是 UnicodeString 类型?
- 我还能如何声明 ss 拥有四个 WideChar?编译器不会接受类型声明
WideString[4]
或UnicodeString[4]
. - 对同一个类型名称(字符串)使用两个不同编译器声明的目的是什么?
最佳答案
这个问题的答案在于,string[n]
(一种 ShortString
)现在被视为旧类型。 Embarcadero 决定不将 ShortString
转换为支持 Unicode。由于引入了长字符串,如果我没记错的话,在 Delphi 2 中,这对我来说似乎是一个合理的决定。
如果您确实想要固定长度的 WideChar 数组,那么您可以简单地声明 array [1..n] of char
。
关于delphi - 如何使固定长度的 Delphi 字符串使用宽字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4794285/