将项目加载到Delphi XE6时出现随机错误

时间:2016-02-08 22:19:27

标签: delphi delphi-xe6 zeos datamodule

有时,当我将项目加载到XE6 IDE时,会发生以下错误

Project loading error when opening a project in delphi XE6

由于某些无法解释的原因,此错误导致TZConnection组件从Datamodule中删除。请注意,该项目已经加载了很长时间没有问题,只是突然发生,这种情况发生了。

有没有人见过这个,知道一种阻止它发生的方法? 它也与其他组件一起发生,并不总是TZConnection组件,但主要是ZConnection。

就像我之前说过的,这似乎是随机出现的。我可以关闭项目A,打开项目B然后关闭它并返回项目A并发出爆炸!,发生错误。

任何线索? (请注意,这也曾经发生在Delphi 2007中)

3 个答案:

答案 0 :(得分:2)

Zeos库本身就是造成这个问题的。

要了解原因并修复它,请使用Delphi启动Delphi的第二个实例,并直接调试该问题。

我写了一篇博文,其中显示了确切的步骤here

关键是设置将为zeos包运行的可执行文件,确保在调试配置中构建它们,然后单击Delphi IDE工具栏上的“运行”按钮。第二个delphi实例将启动。打开受影响的表单,但确保使用正在调试的IDE实例而不是当前正在进行调试的实例,当发生导致组件自行删除的异常时,您将能够进入打包代码并查看问题。

我怀疑DLL-hell路径问题。 (路径中有多个Zeos或其他核心BPL / DLL副本。)

答案 1 :(得分:1)

实际上, 无法理解 - 它可能是由于DataModule(或某些带有db-aware组件通过属性连接到它的表单)被加载到IDE(见下文)。您是否尝试检查ZEOS .BPL文件所在的位置在您的系统路径上?与他们所依赖的任何.BPL类似 - 请参阅Zeos的.DPK文件中的“requires”子句。

这种问题在片状数据库组件中经常出现,可能比其他类型的组件更常见,因为数据库组件更频繁地涉及数据模块和表单之间的链接,例如,当表单上的数据库感知组件连接到数据模块上的其他组件时。

因此,有时候,这种问题是否显示取决于IDE重新打开它们的顺序 - 尝试关闭项目时只打开dm然后重新打开它。尝试在IDE中打开哪些数据模块和表单,以及按顺序可以帮助您解决问题。如果/当您有可重复的步骤序列来引发问题时,请向作者报告。

确定问题是否由项目加载时的异常引起的一种相当可靠的方法是在另一个实例中运行IDE的一个实例。只要IDE的第一个(“外部”)实例将调试器设置为“Break on Language exception”,它应该能够直接转到异常的源(当然,假设它发生在项目中)由第二个实例加载。当然,可能需要花费一些时间来“抓住它”,但是当你设法时它会非常令人满意。祝你好运!

答案 2 :(得分:1)

与MartynA不同,我怀疑这是由异常造成的。

我更可能期望windows path environment variable太长时间导致此类问题。

不幸的是,许多组件供应商甚至一些程序都修改了" windows path environment variable`以使其自己的文件可以被其他程序访问。

windows path environment variable无法提供足够的信息时,窗口将尝试在默认系统目录中找到C:\Windows\System32

的文件

所以我强烈建议检查windows path environment variable检查其长度。

最简单的方法是只需启动command prompt并输入path指令或path >> D:\path.log来将路径环境变量信息导出到文件中以便于查看如果它很长。

编辑:BTW我刚检查了我的路径环境变量,我发现我必须做一些清理,因为它包含Delphi XE8和Delphi XE 10 Seattle文件位置的条目,即使你已经从我的计算机中删除了Delphi XE8。更不用说我之前删除过的一些程序中的一些条目。