gpt4 book ai didi

Delphi "EClassNotFound"错误,并且 DFM 可能损坏

转载 作者:行者123 更新时间:2023-12-03 15:15:16 25 4
gpt4 key购买 nike

我在 Delphi 2007 项目中收到一系列级联的“EClassNotFound”错误。似乎不是由缺少 Name 属性值引起的,通常情况下,虽然在初始化部分添加 RegisterClass(XXX) 修复了手头的 EClassNotFound 错误,但另一个错误似乎无限期地跟随它。

我终于在文本编辑器中破解了 DFM 文件,在我看来它可能已损坏(表单元素名称中有很多非 ASCII 字符,与我习惯在中看到的内容相比,它看起来非常“非结构化”) DFM 文件)。 (我会在这里发布相同的内容,但不确定是否可以,使用非 aSCII,所以会推迟)。

表单加载正常,并且似乎编译/语法检查也正常,但是一旦我运行它,就会遇到麻烦。

回到 SVN 中它的早期版本,看起来它已经处于这种状态有一段时间了,这让我认为要么 A) DFM 文件不是我的问题,要么 B) Delphi 表单流具有相当的容错/鲁棒性(额外问题:它是哪一个?)。

如果 DFM 文件是问题所在并且已损坏,则回滚将必须回滚,而这将是昂贵的。鉴于 IDE 仍然可以加载它,是否有任何实用程序可以清理该文件?

或者,我将 DFM 作为主要嫌疑人,这完全没有根据吗?

感谢大家的意见。忘记了带有 DFM 文件的二进制/文本选项,所以这很有帮助。看起来 DFM 本身没有损坏。

但仍然存在 EClassError 问题。回复:它缺少属性值,或引用不存在的属性等,进一步的问题:是否给出错误的类(当前是 TnxSqlUpdateObject,但如果到目前为止的经验是一致的,可能会更多等待)通常/总是真正的“罪魁祸首”类/对象?

例如,现在我的主表单有四个对 TnxSqlUpdateObject 的引用,这些引用实际上已放在表单上。如果我将 RegisterClass(TnxSqlUpdateObject) 放在初始化部分中,它对于 EClassNotFound 错误运行良好,但然后继续执行下一个错误(在本例中为 TStringField)。

在这种情况下,我重新安装了 NexusDB 组件,并使用一些我认为可能有问题的组件构建了一个新项目。它编译并运行良好,直到我从我的真实项目中添加其他形式(不幸的是,它又引用了很多其他形式)。

那么,听起来我真正的问题是如何有条不紊地诊断和修复所有 EClassNotFound 错误?

最佳答案

如果组件位于表单上,但源文件中的表单定义中也没有条目,我会收到此错误。最常见的是当我从其他表单复制并粘贴时。最简单的解决方案是选择组件,剪切它,然后将其粘贴回来。当你保存时,组件的单元将被添加到源中,当你再次运行它时,一切都会好的。

关于Delphi "EClassNotFound"错误,并且 DFM 可能损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/483022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com