我在我的Delphi 2007项目中遇到了一系列"EClassNotFound"错误。这似乎不是由于缺少Name属性值所致,虽然在初始化部分添加RegisterClass(XXX)可以解决当前的EClassNotFound错误问题,但另一个错误随之而来,看起来是无限的。
最终我打开了DFM文件,在文本编辑器中查看,我认为它很可能已经损坏了(在表单元素名称中有许多非ASCII字符,并且与我习惯看到的DFM文件相比非常“不规则”)。表单加载正常,似乎也能编译/语法检查通过,但一旦运行就出现问题。
回到它在SVN的早期版本,看起来它已经处于这种状态有一段时间了,这让我想到要么A)DFM文件不是我的问题,要么B)Delphi表单流式传输非常容错/健壮(奖励问题:哪个是正确的?)。
如果DFM文件是问题,并且已经损坏,则回滚将不得不回滚到以前的版本,这将是代价高昂的。鉴于IDE仍然可以加载它,是否有任何实用程序可以清理文件?
或者,我完全没有正确猜测DFM是主要嫌疑人吗?
谢谢大家的帮助。我忘记了DFM文件的二进制/文本选项,所以这很有帮助。看起来DFM本身并没有损坏。
但是仍然存在EClassError问题。关于它是否缺少属性值或引用不存在的属性等问题,进一步的问题是:给出错误的类(当前为TnxSqlUpdateObject,但如果经验一致,可能还有更多待解决)通常/总是实际的“罪魁祸首”类/对象吗?
例如,现在我的主表单有四个对TnxSqlUpdateObject的引用,并且这些引用实际上已经放在了表单上。如果我将RegisterClass(TnxSqlUpdateObject)放在初始化部分,则它可以解决EClassNotFound错误,但随后会出现下一个错误(在这种情况下是TStringField)。
我已经重新安装了NexusDB组件,并构建了一个使用我认为可能是问题的某些组件的新项目。它编译和运行良好,直到我添加来自我的真实项目的另一个表单(反过来,不幸的是引用了相当多的其他表单)。
因此,我的真正问题是如何系统地诊断和修复任何和所有的EClassNotFound错误?
最终我打开了DFM文件,在文本编辑器中查看,我认为它很可能已经损坏了(在表单元素名称中有许多非ASCII字符,并且与我习惯看到的DFM文件相比非常“不规则”)。表单加载正常,似乎也能编译/语法检查通过,但一旦运行就出现问题。
回到它在SVN的早期版本,看起来它已经处于这种状态有一段时间了,这让我想到要么A)DFM文件不是我的问题,要么B)Delphi表单流式传输非常容错/健壮(奖励问题:哪个是正确的?)。
如果DFM文件是问题,并且已经损坏,则回滚将不得不回滚到以前的版本,这将是代价高昂的。鉴于IDE仍然可以加载它,是否有任何实用程序可以清理文件?
或者,我完全没有正确猜测DFM是主要嫌疑人吗?
谢谢大家的帮助。我忘记了DFM文件的二进制/文本选项,所以这很有帮助。看起来DFM本身并没有损坏。
但是仍然存在EClassError问题。关于它是否缺少属性值或引用不存在的属性等问题,进一步的问题是:给出错误的类(当前为TnxSqlUpdateObject,但如果经验一致,可能还有更多待解决)通常/总是实际的“罪魁祸首”类/对象吗?
例如,现在我的主表单有四个对TnxSqlUpdateObject的引用,并且这些引用实际上已经放在了表单上。如果我将RegisterClass(TnxSqlUpdateObject)放在初始化部分,则它可以解决EClassNotFound错误,但随后会出现下一个错误(在这种情况下是TStringField)。
我已经重新安装了NexusDB组件,并构建了一个使用我认为可能是问题的某些组件的新项目。它编译和运行良好,直到我添加来自我的真实项目的另一个表单(反过来,不幸的是引用了相当多的其他表单)。
因此,我的真正问题是如何系统地诊断和修复任何和所有的EClassNotFound错误?