7

我工作的大多数单元都依赖于数据模块。我遇到的最烦人的事情之一是一条错误消息告诉我

模块 X 引用了另一个模块,并且在加载模块 Y 之前无法保存。

现在,我确信有一个很好的理由为什么CheckNoFixups在尝试时引发此错误WriteRootStream,并且无法保存有效的文本文件(希望这不是Catastrophic Failure我必须在仍然无法重新启动 IDE 的地方保存我的工作。)但是有什么好的理由呢?

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

编辑: 这是德尔福 2007

DataModule 的声明是:

unit DataMD;

TRepDataMod = class(TDataModule)
...
var
  RepDataMod: TRepDataMod;
4

4 回答 4

1

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

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

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

于 2010-03-10T16:18:51.153 回答
1

我有同样的问题(Delphi 7)。

我在数据模块上有一个图像列表,可在整个应用程序中使用。如果存在语法错误,它会在编译后发生。IDE 打开 (pas) 文件,我可以更正错误。

但是尝试保存文件会显示该消息(“模块'XXX'链接到模块'YYY',在当前项目中找不到。你想删除/重定向到另一个模块的链接吗?”)。XXX 是文件本身,YYY 是数据模块。数据模块包含在项目中,对该问题回答“”将删除 dfm 文件中的所有链接。

所以唯一的解决方案是按“否”,这基本上会保存 pas 文件并关闭文件 - 这次按“否”来回答是否应该保存文件的问题(实际上 pas 已经保存)。

我已经尝试了各种解决方法,但仍在苦苦挣扎。

于 2010-06-29T06:51:33.200 回答
0

模块 X 引用了另一个模块,并且在加载模块 Y 之前无法保存。

只需查看 X.dfm (X.fmx) 中的“Y”条目。怎么处理他们,这是你的选择。

于 2013-06-23T10:54:47.947 回答
0

确保 DataModule 是项目的一部分。仅仅包含在搜索路径中或手动输入 dpr 文件是不够的。通过 IDE 并将 DataModule 添加到项目中。

还要确保 DataModule dfm-resource 与单元具有相同的名称。

于 2016-01-14T16:08:05.460 回答