停止IDE自动添加使用单位

时间:2015-11-12 16:18:15

标签: delphi delphi-10-seattle

我正在将一个Lazarus项目搬到Delphi Seattle。

Lazarus项目取决于40多个单元(包括控件),并有多个应用程序。

在所有项目的uses子句中,他们使用了以下内容:

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, DBCtrls, {$I OurLibrary.inc};    

其中包含40多个单位$I OurLibrary.inc

由于其中一些单位是控件,我在Delphi中注册了它们。

但是,如果我保存项目或构建/编译它,Delphi会再次添加使用部分中的单位。

  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, DBCtrls, uOurEdit, {$I OurLibrary.inc}; 

在这种情况下,单位uOurEdit即使在$I OurLibrary.inc中也会再次添加。

如果我手动删除它并再次编译项目则运行。 一旦我切换回设计师模式并尝试运行它,同样的事情不断发生 - 它再次添加了uOurEdit。

一旦你移除了一个单位Lazarus没有再添加它。德尔福就是这么做的。

有没有办法告诉Delphi停止读取单位或者根本不再自动停止添加单位?

2 个答案:

答案 0 :(得分:10)

IDE认为代码的某些部分受其控制。这包括大部分DPR文件,表单或数据模块声明的默认published部分,以及单元uses部分的interface子句。最好不要在这方面与IDE对抗。你最终会失败。

我不建议在include子句中使用uses指令。正如您已经注意到的那样,IDE不会读取包含的文件来确定单元列表。表单设计器会自动添加它认为需要的单元,并且无法阻止它。

由于IDE会在使用时自动添加控件单元,因此您应该能够安全地从包含文件中删除它们。

您也可以考虑将单位列表移至uses部分中的implementation子句。 IDE不接触那个。

答案 1 :(得分:2)

我同意使用包含文件不是一个好主意,但实际上有一种方法可以阻止IDE自动添加这些单元。

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, DBCtrl,
  {$IFDEF DUMMY}
  // add those units here which you don't want to automatically add
  // the IDE won't add them but they won't be part of the uses assuming
  // DUMMY is undefined
  uOurEdit,
  {$ENDIF}
  // Here comes the rest of the units
  {$I OurLibrary.inc};

这可能不适合你,因为你必须手动添加uOurEdit,所以也许最好遵循Rob的建议。但是,此技术可用于停止IDE自动添加单元。