gpt4 book ai didi

delphi - 在 Delphi 2007 中设置事件处理程序并收到 "Parameter Lists Differ"错误

转载 作者:行者123 更新时间:2023-12-03 18:20:24 24 4
gpt4 key购买 nike

我正在尝试在 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/

24 4 0