我正在尝试在Delphi 2007中编写一个使用ActiveX库的类.该类将捕获ActiveX库必须公开其自身事件的事件,该事件将一些信息添加到ActiveX库的事件中.
最重要的是,当我将自己的过程分配给我想要使用的ActiveX库的事件时,我收到一个错误:
E2009 Incompatible types: 'Parameter lists differ'
我确定参数列表是相同的(相同数量的参数和相同的类型)所以我在想我会以错误的方式去做.
任何建议或有人可以发布我正在尝试做的一些示例代码?
要检查的第一件事是,您尝试分配给事件属性的是一个方法.它需要是属于类的过程或函数; 它不能是一个独立的子程序.
接下来,请注意仅仅确认类型的名称匹配是不够的.Delphi允许重新定义标识符,因此当您在另一个单元中看到相同的标识符时,您在一个单元中看到的类型名称不一定是指同一个名称.意义甚至可以在单位中间改变.例如:
unit Example; interface uses Windows; var foo: TBitmap; implementation uses Graphics; var bar: TBitmap; end.
该foo
变量具有类型Windows.TBitmap
,记录类型,而bar
已经键入Graphics.TBitmap
,一个类的类型.
您可以让IDE帮助您诊断:按住Ctrl键并单击标识符名称,让IDE带您进行声明.他们带你到同一个地方吗?如果没有,那么您可以使用单位名称限定类型名称.例如,我们可以将bar
上面的声明更改为:
var bar: Windows.TBitmap;
现在它将具有相同的类型foo
.在事件处理程序声明中检查相同的事情.