我正在尝试在 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
相同的类型。检查事件处理程序声明中是否有相同的内容。
关于delphi - 在 Delphi 2007 中设置事件处理程序并收到 "Parameter Lists Differ"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/434126/