On 06 Sep 2010, at 17:21, fpanas...@tiscali.it wrote:

> Using control callback function with a control (a button) apparently 
> results in wrong 
> parameter values when compiling to 386 (values are correct compiling 
> to ppc).

The default calling convention on non-i386 platforms is mostly the same as the 
C calling convention. On i386, it's different for Delphi compatibility. Add the 
"mwpascal;" modifier at the end of the function declaration to get the same 
calling convention behaviour as with MetroWerks Pascal (that's also the calling 
convention expected by the declarations in the macosall unit).

>    lControlActionUPP:= NewControlActionUPP(ControlActionProcPtr
> (@myActionProc));

By adding an explicit typecast you make it impossible for the compiler to tell 
you that the routines are incompatible. Remove the ControlActionProcPtr 
typecast, and if you are using MacPas mode then also remove the "@". The 
compiler will then give an error if the callback's signature is wrong, and it 
will also print the signature of the expected type.


Jonas_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to