在 Delphi 6 中加载特定帧会导致它立即退出

Posted

技术标签:

【中文标题】在 Delphi 6 中加载特定帧会导致它立即退出【英文标题】:Loading a particular frame in Delphi 6 causes it to exit immediately 【发布时间】:2012-03-14 06:37:51 【问题描述】:

我有一个以前从未出现过任何问题的框架。现在,当我在 Delphi 6 IDE 中并尝试在设计模式下在 Form 上绘制它的实例时,IDE 立即退出,没有任何崩溃错误、对话框或 Watson 样式的“请报告此错误”消息框。我在 Windows XP 上运行,我以前从未见过 Delphi IDE 这样做过。框架上甚至没有我的任何自定义组件,只有一些库存的 Delphi VCL 组件和一些来自库的第三方组件,我多年来一直使用这些组件没有遇到任何问题。我尝试了其他几个驻留在我的项目中的框架,我仍然可以在设计时创建它们而不会出错。

请注意,我确实尝试彻底清理所有项目 DCU,并为我的自定义 VCL 组件重建了几个 Delphi 包,以防万一,但这些努力没有改变。

有没有人有任何诊断和解决此问题的提示?

【问题讨论】:

从框架中一个一个地删除组件,直到找到罪魁祸首。您可能需要通过框架的 .pas 和 .dfm 中的文本编辑器来执行此操作。 此行为是由逃脱 Delphi 异常处理的未处理错误引起的,并且是由 Windows(通常是 DEP)引起的。这是为了防止任何问题使系统变得不稳定或不安全。除了“我有一个框架”之外没有任何信息(例如,根本没有框架的来源,或者您尝试使用它的形式),很难判断到底会发生什么。 尝试安装madExcept。它做得很好catching IDE exceptions。 如果您还没有尝试过,请尝试重新启动 Delphi 和/或重新启动计算机。这在过去为我解决了 IDE 问题。 提示:当我有一个应用程序崩溃而没有任何错误时,它总是由堆栈溢出引起的。当然,YMMV 【参考方案1】:

可以将 Delphi 配置为自行调试。您启动了 Delphi 的第二个副本,您可能能够看到您的代码中的哪个位置,而我可以假设的唯一合理的事情是第三方库组件的代码突然出现了问题。要定位崩溃的源头和行号,Delphi 调试器本身可能会有一些用处。

只需使用 Delphi.exe 作为宿主可执行文件(适用于 Delphi 6 和 7)或 bds.exe(适用于较新的 Delphi 版本)启动第三方组件。 (在使用运行参数的IDE中,在Host Application中,放入delphi.exe或bds.exe)

那么一旦你找到了异常的来源并修复了代码并重新编译了包含该代码的组件包,你的问题就可能得到解决。

Related answer by me

(请注意,madExcept 的想法是等效的,因为它还可以为您提供堆栈回溯,以帮助您找到发生崩溃的代码,但如果没有,这种技术也很有价值。)

【讨论】:

以上是关于在 Delphi 6 中加载特定帧会导致它立即退出的主要内容,如果未能解决你的问题,请参考以下文章

Spark 1.6 在数据帧保持分区字段中加载特定分区

特定的 webview 不会在 Android 的布局中加载

如何在搜索匹配关键字时在同一窗口中加载特定网址

自定义单元格导致“NSInternalInconsistencyException”,原因:“无法在包中加载 NIB:

如何在 dojo 中加载 js 小部件文件? registerModulePath 工作,但在 1.8 包中不工作 - 立即需要帮助

从包中加载 NIB 时出现异常