【发布时间】:2010-10-03 17:43:40
【问题描述】:
我在我的 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 错误?
【问题讨论】:
-
您是否使用包设置检查了您的构建?使用 filemon 并检查被引用的外部文件。
标签: delphi dfm eclassnotfound