2

我正在尝试在Delphi 2007中编写一个使用ActiveX库的类。该类将捕获 ActiveX 库必须公开其自己的事件的事件,该事件将一些信息添加到 ActiveX 库的事件中。

底线是,当我将自己的过程分配给要使用的 ActiveX 库的事件时,会出现错误:

E2009 Incompatible types: 'Parameter lists differ'

我确定参数列表是相同的(相同数量的参数和相同的类型),所以我认为我的做法是错误的。

任何建议或有人可以发布一些我正在尝试做的示例代码吗?

4

2 回答 2

5

首先要检查的是您尝试分配给事件属性的东西是方法。它需要是属于某个类的过程或函数;它不能是一个独立的子程序。

接下来,请注意仅确认类型名称匹配是不够的。Delphi 允许重新定义标识符,因此当您在另一个单元中看到相同的标识符时,您在一个单元中看到的类型名称不一定指的是同一事物。意思甚至可以在一个单元的中间发生变化。例如:

unit Example;

interface

uses Windows;

var
  foo: TBitmap;

implementation

uses Graphics;

var
  bar: TBitmap;

end.

foo变量有 type Windows.TBitmap,一个记录类型,而有bartype Graphics.TBitmap,一个类类型。

您可以让 IDE 帮助您诊断此问题:Ctrl+单击标识符名称,让 IDE 带您进入它们的声明。他们会带你去同一个地方吗?如果没有,那么您可以使用单位名称限定类型名称。例如,我们可以将bar上面的声明更改为:

var
  bar: Windows.TBitmap;

现在它将具有与 相同的类型foo。在您的事件处理程序声明中检查相同类型的内容。

于 2009-01-12T01:15:36.657 回答
1

我在 Ctrl+click 中使用了 gabr 的建议,发现其中一个参数是一个我没有意识到的常数。我将第二个变量更改为 const 并且效果很好。谢谢。

于 2009-01-12T12:37:24.567 回答