有关delphi的函数指针使用
初学delphi,碰到一个函数指针问题,始终编译不过,求大侠帮忙。
frm1类中,定义type:
type
TProcRecv = procedure(evtMsg: Byte;RcvBuf : PChar;ByteLen : Integer);
frm1类中定义public过程:
procedure spcSendData(DatBuf:PChar; DatLen : Integer; pfnRcv : TProcRecv);
frm2中定义私有的接收Callback函数:
procedure RcvCOMDat(evtMsg: Byte;RcvBuf : PChar;ByteLen : Integer);
frm2的一个子procedure中调用frm1的公用spcSendData()过程:
begin
//....
spcSendData(PChar(@byteArrBurnDat[0]),hexedtBurnData.DataSize,RcvCOMDat);
//...
end;
这个函数的调用目的就是发送一串数据时,注册一个回调函数给frm1,frm1发送处理流程结束后通过RcvCOMDat回调函数,把数据传递给frm2.
但是编译时,老是说spcSendData()函数的调用处:incompatible types:'regular procedure and method pointer',意思是说过程指针类型不兼容。哪位大侠指点一下,到底错在了什么地方?
多谢多谢。
[解决办法]
type
TProcRecv = procedure(evtMsg: Byte;RcvBuf : PChar;ByteLen : Integer);
改为
type
TProcRecv = procedure(evtMsg: Byte;RcvBuf : PChar;ByteLen : Integer) of object;