在Delphi 2010下(也可能在D2009下),默认字符串类型是UnicodeString。
但是,如果我们宣布......
const
s :string = 'Test';
ss :string[4] = 'Test';
...然后第一个字符串 s 如果声明为 UnicodeString ,则第二个字符串 ss 声明为 ssiString < / STRONG>!
我们可以检查一下:SizeOf(s[1]);
将返回尺寸2和SizeOf(ss[1])
;将返回大小1.
如果我宣布......
var
s :string;
ss :string[4];
...比我想要的 ss 也是UnicodeString类型。
WideString[4]
或UnicodeString[4]
。答案 0 :(得分:9)
对此的答案在于string[n]
,即ShortString
,现在被视为遗产类型。 Embarcadero决定不转换ShortString
以支持Unicode。由于引入了长字符串,如果我的记忆正确,在Delphi 2中,这对我来说似乎是一个合理的决定。
如果你真的想要WideChar的固定长度数组,那么你可以简单地声明array [1..n] of char
。
答案 1 :(得分:4)
您不能使用string[4]
作为类型。以这种方式声明它会自动使它成为ShortString。
将其声明为Char数组,这将使其成为4个WideChars的数组。
因为string[4]
使其成为包含4个字符的字符串。但是,由于WideChars的大小可能超过一个字节,因此这将是a)错误,并且b)令人困惑。 ShortStrings仍然是为了向后兼容,并且自动是AnsiStrings,因为它们由[x]一个字节的字符组成。