R: Re: [fpc-pascal] Mac osx callback functions parameters: wrong values in 386 mode.

fpanasiti at tiscali.it fpanasiti at tiscali.it
Tue Sep 7 16:08:07 CEST 2010

Thank you very much for your help.


----Messaggio originale----
Da: jonas.maebe at elis.ugent.be
Data: 06/09/2010 18.13
A: "fpanasiti at tiscali.it"<fpanasiti at tiscali.it>, "FPC-Pascal users 
discussions"<fpc-pascal at lists.freepascal.org>
Ogg: Re: [fpc-pascal] Mac osx callback functions parameters: wrong 
values	in 386 mode.

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

> Using control callback function with a control (a button) 
> results in wrong 
> parameter values when compiling to 386 (values are correct 
> 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.

fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org

Risparmia con Tutto Incluso Light: telefono + adsl 8 mega a soli 19,95 € al mese per un anno!SCONTO DI 120 EURO! http://abbonati.tiscali.it/telefono-adsl/prodotti/tc/tuttoincluso_light/?WT.mc_id=01fw

More information about the fpc-pascal mailing list