我有带有函数getsomedata的组件(键:string;listener:Tlistener)
哪个侦听器声明为like事件,如下所示:
Tlistener = procedure (name,age,sex:string) of object ;
但是在我的组件侦听器管理器中,当我添加新的监听器时,监听器参数会像TObject类一样。
ListenerManager.addListener(key:string;Listener:TObject);
当我简化代码时,我会收到错误消息。
实际参数不足
因为事件对象(TListener)和ListenerManager参数(TObject)。
全功能代码示例。
procedure getsomedata (key:string;listener:Tlistener) ;
begin
ListenerManager.addListener(key,listener); //error Here >>> addListener input parameters (key:string;Listener:TObject);
end;
我该怎么解决呢?
发布于 2012-11-28 09:14:13
在此代码中:
procedure getsomedata (key:string;listener:Tlistener) ;
begin
ListenerManager.addListener(key,listener);
end;
您正在尝试将TListener
类型的变量传递给addListener
的第二个参数。该参数被键入为TObject
。
现在,TListener
被键入为
procedure(name,age,sex:string) of object;
过程类型的变量不能传递给类型为TObject
的参数。
很难确切知道正确的代码会是什么样子,因为这个问题没有包含足够的背景信息。也许addListener
应该接收一个TListener
而不是TObject
。但那只是猜测。如果您想要更完整的建议,那么您将需要在问题中添加足够的细节。
你在评论中说:
我无法将参数类型
TObject
更改为TListener
。
那样的话你就被卡住了。将TListener
转换为TObject
是不可能的。现在,您可以实现一个具有TListener
类型的单个字段的类,并传递该字段。但我很怀疑这真的是正确的解决办法。
https://stackoverflow.com/questions/13600920
复制相似问题