如何在将单元保留在项目中的同时从单元中删除表单?

How to remove a form from a unit while keeping the unit in the project?

我用的是Delphi7,遇到一件很烦人的事。我的一个项目已经变得相当大,我在其中一个单元中使用的表格已经过时了。我决定摆脱它。看来我做不到。 IDE 总是要求提供 .dfm 文件,无论我尝试了什么(而且我认为我非常彻底)。

这是我所做的:

首先,我使用 IDE 的“从项目中删除”将整个项目从项目中删除。然后我注释掉了该单元中使用任何内容的所有部分和 compiledbulit运行 项目。它没有任何错误或警告。我 保存了所有文件 并关闭了 Delphi IDE,启动了记事本并从单元中删除了表单声明,然后删除了所有相关文件,除了 . pas(有了这个,它变得像任何其他常规单位一样)。

然后我用 Total Commander 搜索了项目文件夹中的每个文件,看是否有任何文件包含被删除单元的名称。 None 做到了。 我启动了 Delphi 并加载了项目。 有了这个我感到满意并将单位的名称添加到 uses 列表并按下 Compile.

它仍在寻找该死的 DFM!!

如果有人知道,请给我解释一下。我错过了什么?

如果编译器正在查找 .dfm 文件,那是因为编译器包含一个包含以下内容的单元:

{$R *.dfm}

这就是告诉编译器 link 与单元同名的 .dfm 文件。

您似乎仍会在项目的某处引用该单元。编译器必须为您的单元找到 .pas 文件或已编译的 .dcu 文件。搜索名为 <UnitName>.pas<UnitName>.dcu 的所有文件。删除这些文件。然后,只要您有尝试使用这些单元的代码,就会遇到编译器错误。通过从命名它的 uses 子句中删除该单元来处理这些问题。那你应该完成了。