Bonjour,
ma question risque d'en laisser perplexe plus d'un mais je me lance quand meme.
Est ce que dans autoit on peut mettre en paramètre d'une fonction une fonction ?
Par exemple j'ai 3 fonctions : FN1(), FN2(),FN3().
je veux créer une fonction FN4() qui va prendre en paramètre FN1() ou FN2() ou FN3().
Par exemple comme ça : FN4(FN1()). Est ce que c'est possible ?
Cela me permettrait de vraiment simplifier le code d'un de mes script qui hélas dépasse les 3000 lignes car je repete souvent la meme chose (étant débutant), d'ou la création de fonction.
Merci d'avance pour vos réponses.
Nicolas
[R] Mettre en paramètre d'une fonction, une fonction
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
-
- Niveau 2
- Messages : 15
- Enregistré le : mer. 23 avr. 2008 13:31
- Localisation : Aix en Provence
- Status : Hors ligne
[R] Mettre en paramètre d'une fonction, une fonction
Modifié en dernier par Nicolas le mer. 23 avr. 2008 15:04, modifié 1 fois.
Re: [..] Mettre en paramètre d'une fonction, une fonction
Bonjour,
A priori, je ne vois aucune contre-indication à la réalisation de ceci.
J'ai fais un petit exemple pour tester
Cela a l'air de fonctionner correctement, évidemment là c'est un cas très basique, je suppose que si tu as plus de 3000 lignes de code c'est que le système doit être plus complexe mais dans l'idée ça devrait fonctionner.
Cordialement,
A priori, je ne vois aucune contre-indication à la réalisation de ceci.
J'ai fais un petit exemple pour tester
Code : Tout sélectionner
affChaine(a(),b(),c())
Func affChaine($a,$b,$c)
$chaine = $a & " " & $b & " " & $c
ConsoleWrite("Le résultat est: " & $chaine & @CRLF)
EndFunc
Func a()
return "Bonjour,"
EndFunc
Func b()
return "comment"
EndFunc
Func c()
return "ca va?"
EndFunc
Cordialement,
L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
-
- Niveau 2
- Messages : 15
- Enregistré le : mer. 23 avr. 2008 13:31
- Localisation : Aix en Provence
- Status : Hors ligne
Re: [..] Mettre en paramètre d'une fonction, une fonction
merci pour ta réponse mais dans ton exemple tu récupérère dans la fonction affchaine() le résultat des fonctions a(), b(), et c() en utilisant le return dans tes fonctions. Mais le pb c'est que mes fonctions ne sont pas la pour retourner un résultat mais pour traiter des chaines de caractères et renvoyer des résultats dans un fichier HTML. Il faut donc que je puisse les exécuter.
est ce que si je fais ça cela foncionne.
est ce que si je fais ça cela foncionne.
Code : Tout sélectionner
$Func=a()
affChaine($Func)
Func affChaine($a)
$a ; pour lancer la fonction rentrée en paramètre
EndFunc
Func a()
msgbox(1,"","Bonjour")
EndFunc
Func b()
return "comment"
EndFunc
Func c()
return "ca va?"
EndFunc
Re: [..] Mettre en paramètre d'une fonction, une fonction
J'ai repris ton exemple pour le travailler un peu et arriver à ce résultat:
En fait, je passe le nom de la fonction en tant que chaine de caractère, et je la fais s'exécuter grâce à la fonction Execute().
J'espère que je n'ai pas fais de contre-sens à ce que tu demandes.
Cordialement,
Code : Tout sélectionner
Func a()
msgbox(1,"","Bonjour")
EndFunc
$Func = "a()"
affChaine($Func)
Func affChaine($a)
Execute($a) ; pour lancer la fonction rentrée en paramètre
EndFunc
J'espère que je n'ai pas fais de contre-sens à ce que tu demandes.
Cordialement,
L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
-
- Niveau 2
- Messages : 15
- Enregistré le : mer. 23 avr. 2008 13:31
- Localisation : Aix en Provence
- Status : Hors ligne
[R] Mettre en paramètre d'une fonction, une fonction
Tu n'as pas fait de contre-sens du tout !!! merci beaucoup c'est exactement ce que je voulais faire mais je ne connaissais pas execute.
Merci
Nicolas
Merci
Nicolas
-
- Niveau 7
- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
Re: [R] Mettre en paramètre d'une fonction, une fonction
La fonction Call est encore mieux que Execute car elle permet en plus de mettre des arguments dans la fonction appelée. Et donc pour reprendre l'exemple, ça donne :
Code : Tout sélectionner
$Func = "a"
Call($Func)
Func a()
msgbox(1,"","Bonjour")
EndFunc
; inutile de passer par la fonction intermédiaire "affChaine"
;~ Func affChaine($a)
;~ Execute($a) ; pour lancer la fonction rentrée en paramètre
;~ EndFunc