如何减少新表单中的“uses”样板文件?

11
每次我向我的项目添加一个新表单时,它都会在uses子句中插入大量的样板代码。
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

说实话,有谁会经常使用Variants单元?通常我最终会删除Windows、Messages、Variants、Graphics和Dialogs,而且不会觉得有什么遗漏。

那一定是从某个模板文件中提取出来的,但我好像找不到它在哪里。有人知道在哪里可以找到模板并进行编辑吗?我正在使用D2009版本,以防最近有所更改。

4个回答

13

相关资源位于 $(BDS)\bin\delphivclide*.bpl,名称为“VCLIDECMD”,您可以使用所选的资源编辑器(我推荐在 Pelles C 中包含的编辑器)来提取、编辑和更新它。

C++Builder 用户需查找 bcbvclide*.bpl 中名为“CPPVCLIDECMD”的模板文件。

如果您使用的是本地化版 RAD Studio,请参阅相应的语言资源文件(*.DE、*.FR 或 *.JA)。


5
删除WindowsMessages并不会带来任何节省。根据您在表单上拖放的组件,GraphicsDialogs可能会被添加回去,而且它们很有用。删除它们并不能带来多大的节省。如果您没有使用variants(我同意这在COM或DB开发中相当常见),则可以随意删除它们。
我想这一切都取决于您清理uses子句的目的。Variants是唯一可能对您的应用程序产生影响的内容。
至于更改默认模板,我认为它包含在一个包中,该包说明如果您从TForm进行派生,则会得到这些内容。您最有可能需要修改.PAS文件并重新构建VCL包。这需要投入很多努力,但获得的收益却很少。

我认为Mason Wheeler并不想减少可执行文件的大小,他只是想要更清晰自动生成的代码。 - The_Fox
1
福克斯:是的,完全正确。吉姆:如果莫里茨的方法有效,那实际上并不需要太多工作,而且只需要做一次。 - Mason Wheeler

5
我通常在项目完成后使用cnPack中提供的“Uses cleaner”,它会列出项目中所有未使用的单元,因为通常在完成项目时,未使用的单元比你想象的要多。

1
这种方法存在风险。这样的工具无法分析是否需要执行所使用单元的初始化或完成部分。从 uses 中删除单元可能导致不执行初始化和完成部分,从而产生错误。 - Lars Truijens
2
有趣的观点,但在我看来,如果你依赖于一个从未被实际使用过的单元的初始化,那么你的代码需要重构。 - Mason Wheeler
@Mason:如果它是一个用于自动安装某些实用程序(如FastMM4)或补丁(如Andreas的VclFixPack单元)的单元,则不一定需要。我们使用这个技巧在Vista/Windows2008上运行时动态替换对InitializeCriticalSection的调用为InitializeCriticalSectionEx。 当然,在dpr中发生的可能性比在Form单元中发生的要大得多。 - Francesca

0

其实,那也困扰着我。

但是后来我检查了使用默认单元编译的可执行文件大小,然后再检查了没有它们(消息、变量、图形)的可执行文件大小,发现大小并没有太大的差异。

Dialogs.pas 添加了一些千字节,但我经常使用 Delphi VCL 对话框而不是 Win API 的对话框。

所以,我认为不必过于担心它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接