Pointeurs de fonctions.......

Discussion de programmation pour éviter d'empiéter dans les autres forums

Modérateurs : Modérateurs, Développeurs

pf
Développeur(se)|Développeur|Développeuse
Développeur(se)|Développeur|Développeuse
Messages : 974
Inscription : 28 avr. 2004 8:45
Version de PhotoFiltre : 6
Système d'exploitation : xp seven
Localisation : 78

Pointeurs de fonctions.......

Message par pf »

salut à tous,
Un ch'tit probleme (un de + :lol: ) avec Delphi
Voila :

Code : Tout sélectionner

//= Declare type et pointeur ====================
PTTrucBidule = ^TTrucBidule;
TTrucBidule = PROCEDURE TrucBidule(Para1:Integer;Para2:Boolean);

//= Declare les fonctions ====================
PROCEDURE TrucBidule1(Para1:Integer;Para2:Boolean);
PROCEDURE TrucBidule2(Para1:Integer;Para2:Boolean);
PROCEDURE TrucBidule3(Para1:Integer;Para2:Boolean);
PROCEDURE TrucBidule4(Para1:Integer;Para2:Boolean);
(les fonctions sont bonnes !! )

//= Le pointeur qui va bien ====================
FTrucBidule:PTTrucBidule;

//= Et l'appel a la fonction qui marche pas ===============
FTrucBidule:=@TrucBidule1;
FTrucBidule1^(1,FALSE); => Plantage : lecture a l'adresse xxxxx
En C, ca le fait tous seul, mais la, il y a une astuce qui m'echape !!!!!
Plize, ailpe me !!!!!!! :wink:
A+
Antonio
Administrateur(trice)|Administrateur|Administratrice
Administrateur(trice)|Administrateur|Administratrice
Messages : 12830
Inscription : 28 oct. 2003 22:49

Message par Antonio »

En delphi pas la peinde définir de pointeur sur une fonction car une fonction est déjà un pointeur. Il suffit de déclarer le type

Code : Tout sélectionner

//= Declare type ==================== 
TTrucBidule = PROCEDURE (Para1: Integer; Para2: Boolean); 

//= Declare les fonctions ==================== 
PROCEDURE TrucBidule1(Para1:Integer;Para2:Boolean); 
PROCEDURE TrucBidule2(Para1:Integer;Para2:Boolean); 
PROCEDURE TrucBidule3(Para1:Integer;Para2:Boolean); 
PROCEDURE TrucBidule4(Para1:Integer;Para2:Boolean); 
(les fonctions sont bonnes !! ) 

//= La variable qui va bien ==================== 
FTrucBidule: TTrucBidule; 

//= Et l'appel a la fonction qui devrait marcher =============== 
FTrucBidule := TrucBidule1; 
FTrucBidule1(1, FALSE);
pf
Développeur(se)|Développeur|Développeuse
Développeur(se)|Développeur|Développeuse
Messages : 974
Inscription : 28 avr. 2004 8:45
Version de PhotoFiltre : 6
Système d'exploitation : xp seven
Localisation : 78

Message par pf »

Merci Antonio; Ca marche au poil !!! :wink:
Pourquoi faire compliqué alors que c'était si simple ???!!! :lol:
Bonne journée
A+
Antonio
Administrateur(trice)|Administrateur|Administratrice
Administrateur(trice)|Administrateur|Administratrice
Messages : 12830
Inscription : 28 oct. 2003 22:49

Message par Antonio »

C'est beau quand même Delphi :wink: je regrette pas d'avoir quitté le C++ (je vais pas me faire des amis :oops: )
pf
Développeur(se)|Développeur|Développeuse
Développeur(se)|Développeur|Développeuse
Messages : 974
Inscription : 28 avr. 2004 8:45
Version de PhotoFiltre : 6
Système d'exploitation : xp seven
Localisation : 78

Message par pf »

Moi je regrette surtout que tu n'ai pas écrit PhotoFiltre en C !!!!! :wink:
Dans le Pascal, la seule chose que je trouve bien, c'est le nom :lol: :lol:
A+