Page 1 sur 1

[Resolu] Macros de fonctions à arguments facultatifs

Publié : mar. 12/juin/2007 18:53
par lionel_om
Bonjour,

Y'a t'il un moyen de faire des Macros avec arguments facultatifs ?
Car je veux faire une "redéclaration" de fonction, mais via une macro (pour optimiser le temps d'exécution).

Exemple :

Code : Tout sélectionner

Procedure Multiplication_par_100(value.l = #Null)
  ProcedureReturn value * 100
EndProcedure

Macro Mul100( ??? )
  Multiplication_par_100( ??? )
EndMacro
Sinon on peut faire cela, mais on perd l'argument facultatif.

Code : Tout sélectionner

Macro Multiplication_par_100(value)
  value * 100
EndMacro

Procedure Mul100( ??? )
  ProcedureReturn Multiplication_par_100( ??? )
Endprocedure
Merci de vos conseils 8)
Lionel

Publié : mar. 12/juin/2007 19:34
par minirop
ceci ne marche pas ?

Code : Tout sélectionner

Macro Multiplication_par_100(value)
  value * 100
EndMacro

Procedure Mul100( value = 0 )
  ProcedureReturn Multiplication_par_100( value )
Endprocedure
j'ai tester çà marche

Publié : mar. 12/juin/2007 19:48
par lionel_om
Oui ca marche, mais pour "Multiplication_par_100", on n'a pas l'argument facultatif... :?

Publié : mar. 12/juin/2007 20:41
par minirop
lionel_om a écrit :Oui ca marche, mais pour "Multiplication_par_100", on n'a pas l'argument facultatif... :?
documentation de PB a écrit :Exemple: Macro avec paramètre par défaut

Macro BoiteDeMessageEnMajuscule(Titre, Corps = "Ah, aucun corps spécifié")
MessageRequester(Titre, UCase(Corps), 0)
EndMacro

BoiteDeMessageEnMajuscule("Salut") ; Ici la ligne sera remplacée comme ça :
; MessageRequester("Salut", UCase("Ah, aucun corps spécifié"), 0)
'est çà que tu cherches ?

Publié : mar. 12/juin/2007 22:08
par lionel_om
minirop a écrit :C'est çà que tu cherches ?
Il me semblais l'avoir déjà testé !
Je ne devais pas avoir les yeux en face des trous ou alors j'ai pas trouvé ca dans la doc !!!

Merci bien
Lio :wink:

Publié : mer. 13/juin/2007 10:12
par brossden
Le même principe fonctionne avec les procedures !

Code : Tout sélectionner

Procedure Info(Mess.s="Plus de message")
  MessageRequester("Info",Mess)
EndProcedure

Info("C'est un test")
Info()

Publié : mer. 13/juin/2007 16:58
par lionel_om
Oui, je sais...
Mais je ne devais aps être bien en forme à ce moement.

Merci de votre aide !!! :P
Lio