Unicode版本中的ShortString

时间:2013-11-01 12:09:05

标签: string delphi unicode delphi-unicode

在旧的Delphi版本(ANSI字符串)中,ShortStrings:

var Str: String[30];

可用于降低内存成本并且仍然具有ANSI编码。

在当前的Unicode版本中,是否像上面的ShortString,别名为某些Unicode编码版本?
这种做法的优势是否仍然存在以降低内存成本?

1 个答案:

答案 0 :(得分:5)

Delphi短字符串总是使用ANSI编码,即使在现代Unicode识别的Delphi版本中也是如此。它们被认为是遗留数据类型,因此Embarcadero选择在引入Unicode时不进行更改。

对于它的价值,使用短字符串并不一定会降低内存成本。只有你的字符串都接近相同的长度才会这样做。如果你的字符串长度有任何明显的变化,那么使用动态(a.k.a.long)字符串会导致较低的内存开销。

我认为短字符串不比动态字符串好。它们之所以存在只是因为它们预先定义了动态字符如果首先发明动态字符串,则不存在短字符串。实际上,它们并不存在于新的移动编译器中。换句话说,只需使用动态字符串。