【问题标题】:Adding an Unit or New Form in Delphi causes Access Violation在 Delphi 中添加单元或新表单会导致访问冲突
【发布时间】:2018-09-26 12:05:54
【问题描述】:

当我将文件或表单添加到 Delphi 项目时,我经常会遇到访问冲突。然后我要重启Delphi,打开项目再试一次。然后它有时会起作用,有时我会遇到相同的访问冲突。自 XE8 以来,我在所有 Delphi 版本中都有这个问题。

其他 Delphi 程序员似乎也有同样的问题,就像在 Embarcadero 社区:https://community.embarcadero.com/forum/programming/9387-creating-a-new-unit-or-new-form-in-delphi-10-2-3-causes-access-violation

有人说是第三方库造成的。我不信。当您查看堆栈跟踪时,没有第三方库。

复制:

  • 在(有些)更大的项目中工作并在添加单元之前进行一些代码更改。
  • 添加新单元/表单:文件>新建>单元 - 或使用拖放添加现有文件或“将文件添加到项目” - 或从项目中删除文件。

【问题讨论】:

  • 我每天在柏林维护和更新一个非常大的(1M+ LOC,100 多个表格)。自从几个月前从 D2007 移植应用程序以来,我已经使用 File->New->Form 和 Project->Add to Project 添加了几十个新表单,而这个问题没有发生过一次。即使第三方工具不在堆栈跟踪中,也不意味着该问题与第三方工具无关。我有一个第三方属性编辑器,它会以某种方式违反 IDE 的完整性测试并导致 IDE 退出并使我的注册无效,从而使 IDE 报告它在下次运行时未注册。
  • @KenWhite,请看我的回答。我认为您没有关闭 dpr 文件,因此您没有遇到访问冲突。这是真的吗?

标签: delphi delphi-10.1-berlin delphi-10.2-tokyo


【解决方案1】:

我就此事联系了 Embarcadero。他们知道这个问题并回复如下:

这是由于一些 Castalia 代码,自 XE8 以来已在 Delphi 中合并。只能减少这个问题,所以它不会经常发生。使用:Tools - Options - Editor Options - Color - Structural Highlighting 和切换一切都结束了。

看看代码是如何集成到 IDE 中的,这会减少编辑器的解析和重绘。尽管如此,导致访问冲突的处理程序仍然附加到编辑器。

所以基本上,我们将不得不等待这个问题在 10.3 中修复

但过了一会儿,我发现只有在您关闭项目的“dpr 文件”时才会发生访问冲突。所以作为一种解决方法:

不要关闭 dpr 文件,您不会遇到访问冲突

【讨论】:

    猜你喜欢
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 2021-09-18
    • 2016-09-02
    相关资源
    最近更新 更多