当前的 Delphi 也排除了未使用的代码。你可以很容易地在 Delphi 中看到这一点。如果你编译,你会在代码的阴沟里得到“蓝点”。未使用的函数没有蓝点,这意味着它们被排除在外。如果您选中项目选项中的优化复选框,则会重写代码以更多地使用寄存器,从而消除某些变量。
尽管如此,Delphi 可执行文件还是会增长,尤其是在使用某些单元时。我认为您可以在 Delphi 7 中创建的最小 .exe 大约是 10Kb。在以后的版本中,这可能会更大一些。
文件大小的重要原因是
- 资源。大量或大量图像会占用大量空间。如果您在多个表单上使用图标,请确保将它们放在中央图像列表中(在共享数据源上)。使用可用的 PngImageList 实现之一来获得更小的图像尺寸以获得更好的质量。
- rtti。运行时类型信息会导致类定义消耗额外的空间。这个空间部分是由于关于类的元信息,但主要是因为所有额外的代码。可以使用 RTTI 调用的任何方法都可以以一种“后期绑定”方式进行绑定。因此,编译器无法知道这些方法是否可以消除,因此需要将它们包含在可执行文件中。
- 注册课程。与 2 类似。如果一个类被注册,则可以使用其名称作为字符串来获取和实例化它。这些类必须包含在项目中,即使它们从未使用过,只是因为编译器无法知道是否需要它们。
事实上,RTTI 在最近的 Delphi 版本中得到了扩展。我认为这也会导致关于类的 RTTI 元信息消耗更多空间。你能做的只有这么多。
总的来说,我认为 Delphi 编译器仍然做了很多优化。您不必担心 exe 文件的大小。如果你这样做,你可以试试像upx
. 我对 upx 有很好的经验。它将可执行文件减少到其原始大小的五分之一或更少,同时保留所有功能。