有时,当我将项目加载到XE6 IDE时,会发生以下错误
由于某些无法解释的原因,此错误导致TZConnection组件从Datamodule中删除。请注意,该项目已经加载了很长时间没有问题,只是突然发生,这种情况发生了。
有没有人见过这个,知道一种阻止它发生的方法? 它也与其他组件一起发生,并不总是TZConnection组件,但主要是ZConnection。
就像我之前说过的,这似乎是随机出现的。我可以关闭项目A,打开项目B然后关闭它并返回项目A并发出爆炸!,发生错误。
任何线索? (请注意,这也曾经发生在Delphi 2007中)
答案 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
来将路径环境变量信息导出到文件中以便于查看如果它很长。