2010-10-16 26 views
1

我正在改进一个Delphi程序... 有一个程序,期望TFormClass参数(class of TForm)我得到一个错误不兼容的类型TFormClass和类参考

我通过TForm1或类似的,它不喜欢。例如。 procname(TForm1); 程序中还有其他类似的程序, 同样在程序中传递,但它们没有这样的编译错误。

E.g.还有另一种形式通过并定义为

type TForm4 = class(TForm) 
.... 
procname(TForm4); 

这不会导致编译错误。

我的形式被定义为类型

TForm1 = class(TForm)... 

它看起来相似,对不对?这可能是编译器不接受的原因。

为什么其他人接受?有什么区别?

谢谢。

+6

更好地复制粘贴_exact_代码段。我不相信我们能看到这里的错误部分。 – 2010-10-16 11:20:39

+1

想象出一个单元重新定义tform,所以它使这些异常特殊 – Aftershock 2010-10-16 16:48:14

+1

你没有*重新定义* TForm,你定义了一个新的类具有相同的名称。这种差异很微妙,但非常重要。 – 2010-10-16 17:39:38

回答

0

首先,我没有写这个程序。我改进了它.. 该方案有一个单位,进口问题没有出现的所有单位。

让它被称为“UnitWithAdditionalTFormDotDefinitions”。

解决方案很简单。

在单元的开始n这个错误消息的起源,我改变了uses语句。 E,例如,如上所述,

使用Unit1,Unit2,Forms; //这是原来的状态或类似

使用1单元,UNIT2,表单UnitWithAdditionalTFormDot;