为什么在加载另一个模块之前模块是不可用的?

Jam*_*ass 7 delphi datamodule

我工作的大部分单元都依赖于数据模块.我遇到的最令人讨厌的事情之一是告诉我的错误消息

模块X引用另一个模块,在加载模块Y之前无法保存.

现在,我确信有一个很好的理由为什么CheckNoFixups在尝试时会引发此错误WriteRootStream,并且无法保存实际上是一个Text文件(并且希望这不会出现Catastrophic Failure在我必须重新启动IDE但仍然无法执行的情况下保存我的工作.)但是有什么好理由?

为什么我不能单击保存而不打开包含各种功能和对象的任何文本文件,就像任何其他单元一样?关于DataModule有什么特别之处,这意味着我无法保存我正在处理的源,直到它打开为止,为什么use子句中的其他45个单元不是那么重要它们必须是开放的?

编辑: 这是Delphi 2007

DataModule的声明是:

unit DataMD;

TRepDataMod = class(TDataModule)
...
var
  RepDataMod: TRepDataMod;
Run Code Online (Sandbox Code Playgroud)

小智 1

如果 DataModule 不是打开的项目的一部分,则表单中引用 DataModule 的数据感知对象将无法验证它们的引用,我认为因此会出现该消息。

我仅在将旧项目移植到新的 Delphi 版本或迁移到一组新的数据库组件时才看到此消息。正常情况下我没有遇到过这个消息。

在早期版本中,我没有看到该消息,并且可以保存表格/单位,但是 dfm 中的引用被神奇地删除了。