Unicode版本的ShortString

EPr*_*und 3 delphi string unicode delphi-unicode

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

var Str: String[30];
Run Code Online (Sandbox Code Playgroud)

可以用来减少内存成本,并且仍具有ANSI编码。

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

Dav*_*nan 5

即使在现代Unicode感知的Delphi版本中,Delphi短字符串也始终使用ANSI编码。它们被认为是旧数据类型,因此Embarcadero选择引入Unicode时不做任何更改。

值得的是,使用短字符串并不一定会减少内存成本。仅当您的字符串都接近相同长度时,才会这样做。如果您的字符串的长度有任何明显的变化,那么使用动态(也就是长)字符串将导致较低的内存开销。

我认为短字符串永远不会比动态字符串更好。它们之所以存在是因为它们早于动态字符串。如果首先发明了动态弦,那么短弦将不存在。实际上,它们在新的移动编译器中不存在。换句话说,只使用动态字符串。