【发布时间】:2013-11-12 15:17:05
【问题描述】:
在旧的 Delphi 版本(ANSI 字符串)中,短字符串:
var Str: String[30];
可用于降低内存成本并且仍然具有 ANSI 编码。
在当前的 Unicode 版本中,ShortString 是否像上面一样,别名为某些 Unicode 编码版本?
这种做法在降低内存成本方面的优势是否仍然存在?
【问题讨论】:
-
一分钟就能学会的论坛,为什么还要浪费5分钟?
var s: string[10]; begin WriteLn(SizeOf(s):10, SizeOf(s[1])); -
@Arioch'The 这种反复试验的方法也可以“证明”硬币总是正面朝上。我从不喜欢推荐反复试验。例如,您的方法没有发现使短字符串使用 Unicode 字符的隐藏编译器选项。诚然没有这样的选择,但如果它存在的话,你建议的反复试验不会揭示它。
-
有趣的是关于使用短字符串降低内存成本的部分。几天前我做了相反的事情:用长字符串替换短字符串以减少内存占用。那我成功了吗?你打赌!我将一大堆实例降低到它们原始内存占用量的一小部分,包括长字符串的内存(如果有的话)。我不得不提到它是一个 pre-Unicode Delphi。
-
感谢分享,如果我也遇到这种情况,我也会分享。