Appel d'une procedure dynamiquement

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Appel d'une procedure dynamiquement

Message par Kwai chang caine »

Bonjour à tous

J'suis comme un fou, j'me rappelle plus si ça existe :oops:
Il me semble que j'en ai déja parlé, mais je crois que c'estait pour VB

Je voudrais savoir si on peux appeller une procedure par une variable.
Y'a peut etre quelque chose à faire avec les macros :roll:

Code : Tout sélectionner

Procedure PremiereDaubeAKcc(ParametreQuiSertAFifre.s)
 MessageRequester("Premiere boite à KCC", ParametreQuiSertAFifre.s)
EndProcedure

Procedure SecondeDaubeAKcc(ParametreQuiSertAFifre.s)
 MessageRequester("Deuxieme boite à KCC", ParametreQuiSertAFifre.s)
EndProcedure


Selection.s = "Premiere"
Selection + "DaubeAKcc"("Coucou ça marche pour la boite 1")

Selection.s = "Seconde"
Selection + "DaubeAKcc"("Coucou ça marche pour la boite 2")
Merci de votre aide
Bonne journée
Dernière modification par Kwai chang caine le jeu. 31/juil./2008 11:30, modifié 2 fois.
Anonyme

Message par Anonyme »

Code : Tout sélectionner

Macro AppelDaube(AA,BB)
AA#DaubeAKcc(BB)
EndMacro



 AppelDaube(Premiere,"Coucou ça marche pour la boite 1")
 AppelDaube(Seconde,"Coucou ça marche pour la boite 2")
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Bonjour CPL :D

Merci de ta reponse, mais j'ai une erreur quand je lance le code :cry:
Ou me suis-je encore coincé les c.....? :lol:
Anonyme

Message par Anonyme »

Rajoute tes procédures couille de loup :D
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

LA chanson c'est "coeur de loup " pas "couille de loup" :D
Tu me ferais un pietre DJ :lol:

J'ai honte, j'sais meme pas ou tu veux que je les rajoutes :oops:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

AAAaaaaYYYYAIIIHH !!!
T'es trop une bete


Un loup de la prog quoi

Mon genial cerveau mononeuronique a enfn percuté.

ça marche
Je t'aime

Merci beaucoup mon CPL ange gardien des premiers jours 8)

Code : Tout sélectionner

Macro AppelDaube(AA,BB) 
AA#DaubeAKcc(BB) 
EndMacro 

Procedure PremiereDaubeAKcc(ParametreQuiSertAFifre.s) 
 MessageRequester("Premiere boite à KCC", ParametreQuiSertAFifre.s) 
EndProcedure 

Procedure SecondeDaubeAKcc(ParametreQuiSertAFifre.s) 
 MessageRequester("Deuxieme boite à KCC", ParametreQuiSertAFifre.s) 
EndProcedure 


 AppelDaube(Premiere,"Coucou ça marche pour la boite 1")
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

J'te rassure, je ne suis pas devenu bon. :oops:
J'ai rien compris a ton code, mais il est genial 8)

Faut que je me penche dessus :?

Encore mille merci

Je me permet de le mettre sur le forum US en ton nom, ça peut servir au copains, en plus y'en a qu'on dit que c'etait pas possible :D
Anonyme

Message par Anonyme »

bah , c'est juste une macro

Macro AppelDaube(AA,BB)
AA#DaubeAKcc(BB)
EndMacro

AA# est remplacer par ce que tu passe en param à la macro , BB c'est le string , c'est puissant les macros :D
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Je savais que les macros c'etais fort....mais seulement ceux en boite :lol:
Mais alors la ça m'epate, c'est le "juste" qui est de trop :lol:

J'avais posé la question de l'autre coté de la mer et FREAK m'a donné une combine avec une autre methode encore plus courte et plus dure a comprendre :oops:

Je la met si ça peux servir à quelqu'un sur le forum :D

Code : Tout sélectionner

Procedure FirstKcc(Parameter.s) 
 MessageRequester("First box at KCC", Parameter) 
EndProcedure 

Procedure SecondKcc(Parameter.s) 
 MessageRequester("Second box at KCC", Parameter) 
EndProcedure 

Prototype Kcc(Parameter.s) 

Selection.Kcc = @FirstKcc() 
Selection("Hello, that works fine on box 1") 

Selection.Kcc = @SecondKcc() 
Selection("Hello, that works fine on box 2")
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

J'ai fait ce code avec l'aide du forum US

Voila exactement ce que je voudrais faire, mais en "plusse" pro :lol:

Code : Tout sélectionner

Procedure FirstKcc(Parameter.s) 
 MessageRequester("First box at KCC", Parameter) 
EndProcedure 

Procedure SecondKcc(Parameter.s) 
 MessageRequester("Second box at KCC", Parameter) 
EndProcedure 

Procedure LaunchProcedure(ProcedureToRun.s, Parameter.s) 

 Select ProcedureToRun 
  
  Case "FirstKcc"  
    firstkcc(Parameter) 
        
  Case "SecondKcc"  
    Secondkcc(Parameter) 
    
 EndSelect 

EndProcedure 

LaunchProcedure("FirstKcc", "Hello, that works fine on box 2") 
LaunchProcedure("SecondKcc", "Hello, that works fine on box 1")
Le bleme c'est que l'on est obligé d'entrer chaque procedure dans le select case.
ça serait genial si on pouvait appeller les procedures directement par leur adresse ou leur nom sans avoir a parametrer ces dernieres dans la procedure "LaunchProcedure" :D
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Je viens d'avoir cette idée grace à un code d'OLIVIER
Mais ça n'empeche pas que l'adresse de la procedure n'est pas une variable dans laquelle est le nom de la procedure :cry:

Code : Tout sélectionner

Procedure FirstKcc(Parameter.s) 
 MessageRequester("First box at KCC", Parameter) 
EndProcedure 

Procedure SecondKcc(Parameter.s) 
 MessageRequester("Second box at KCC", Parameter) 
EndProcedure 

CallFunctionFast(@FirstKcc(),"Hello, that works fine on box 1") 
CallFunctionFast(@SecondKcc(),"Hello, that works fine on box 2")
Répondre