type PCANMsg = ^TCANMsg; TCanMsg = record // ici la définitions des éléments constituants la structure end ; LPFNDLL_RECEIVE_CALLBACK = procedure ( CANMsg : PCANmsg ); stdcall; // ou éventuellement LPFNDLL_RECEIVE_CALLBACK = procedure ( var CANMsg : TCANmsg ); stdcall; Function CANUSBSetReceiveCallBack ( h : DWord ; cbfn : LPFNDLL_RECEIVE_CALLBACK ) : CANUSB_Result ; stdcall ; External 'canusbdrv.dll' name 'canusb_setReceiveCallBack' ;
TCanUSB = class class Procedure ReceiveMSG( var CANMSGReceive : TCANMSG ); end ;
Procedure ReceiveMSG( var CANMSGReceive : TCANMsg ); begin // ... end ; TCANUSB = class private FReceiveCallBackResult : integer ; public procedure Receive ; end ; procedure TCANUSB.Receive ; begin FReceiveCallBackResult := canusb_setReceiveCallBack(FHandle, @ReceiveMSG); end ;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionEt pour l'appel, il faudrait soit définir une fonction n'appartenant pas une classe (Pourquoi ? Simplement parce qu'une méthode de classe contient un paramètre supplémentaire caché le "self"), soit déclarer une méthode de classe.
Function CANUSBSetReceiveCallBack ( h : DWord ; cbfn : LPFNDLL_RECEIVE_CALLBACK ) : CANUSB_Result ; stdcall ; External 'canusbdrv.dll' name 'canusb_setReceiveCallBack' ;
int setReceiveCallBack( CANHANDLE h, LPFNDLL_RECEIVE_CALLBACK cbfn )