Page 1 sur 1
[R] Les fonctions à nombre variable de paramètres
Posté : sam. 20 déc. 2014 17:02
par sozary
Bonjour!!
Alors comme écris dans le sujet, comment créer une fonction avec en paramètre n éléments, en C j'ai trouvé mais sous AutoIt cela ne marche pas:
http://openclassrooms.com/courses/les-f ... parametres
Re: [..] Les fonctions à nombre variable de paramètres
Posté : sam. 20 déc. 2014 17:41
par orax
Je ne pense pas que ce soit possible mais une confirmation serait préférable.
J'utiliserais un "array" pour faire ça :
Code : Tout sélectionner
Func multiplication(ByRef $resultat, $nombresAMultiplier)
For $nombre In $nombresAMultiplier
$resultat *= $nombre
Next
EndFunc ;==>multiplication
Local $variable = 1
Local $args[] = [2, 5, 3]
multiplication($variable, $args)
ConsoleWrite($variable & @CRLF)
Re: [..] Les fonctions à nombre variable de paramètres
Posté : sam. 20 déc. 2014 18:09
par Tlem
+1 pour la solution d'orax.
Sinon dans l'aide, lisez la documentation de la fonction
Call (ou cliquez sur le lien ...) et lisez la section Remarks concernant "CallArgArray".

Re: [..] Les fonctions à nombre variable de paramètres
Posté : sam. 20 déc. 2014 18:19
par aulus
Je crée une fonction intermédiaire :
IF GuiCtrlRead($monControle) = "xxx" Then Fonction(arguments)
ou encore :
if @GUI_CtrlId = $monControle Then Fonction(arguments)
Re: [..] Les fonctions à nombre variable de paramètres
Posté : sam. 20 déc. 2014 19:48
par orax
► Afficher le texte:mrgreen: StringSplit()
Code : Tout sélectionner
#include <StringConstants.au3>
Func multiplication($nombres)
Local $resultat = 1
$nombres = StringSplit($nombres, ",", $STR_NOCOUNT)
For $nombre In $nombres
$resultat *= $nombre
Next
Return $resultat
EndFunc ;==>multiplication
ConsoleWrite(multiplication("2,5,3") & @CRLF)
ConsoleWrite(multiplication("-2,-2") & @CRLF)
Re: [..] Les fonctions à nombre variable de paramètres
Posté : sam. 20 déc. 2014 20:50
par jguinch
Je partage l'idée du tableau. Une autre idée, dans la doc :
https://www.autoitscript.com/autoit3/do ... s/Func.htm (voir exemple 2 avec
@NumParams)
Re: [..] Les fonctions à nombre variable de paramètres
Posté : lun. 22 déc. 2014 10:59
par sozary
Merci pour toutes ces solutions!
En attendant j'avais moi aussi utilisé l'astuce du tableau! Juste donc jguinch, si j'ai bien compris, dans l'exemple 2, il faut définir tous les arguments possible (donc limités)?
Code : Tout sélectionner
Test_Numparams($v1 = 0, $v2 = 0, $v3 = 0, $v4 = 0, $v5 = 0, $v6 = 0, $v7 = 0, $v8 = 0, $v9 = 0, _
$v10 = 0, $v11 = 0, $v12 = 0, $v13 = 0, $v14 = 0, $v15 = 0, $v16 = 0, $v17 = 0, $v18 = 0, $v19 = 0)
Re: [..] Les fonctions à nombre variable de paramètres
Posté : lun. 22 déc. 2014 14:05
par jguinch
Oui c'est ça l'idée, donc pas top pour ce que tu veux faire... Mais bon savoir quand même
Re: [..] Les fonctions à nombre variable de paramètres
Posté : lun. 22 déc. 2014 14:19
par mikell
De toute façon cette notion de paramètres optionnels à quantité variable n'existe pas en AutoIt, donc il faut contourner le pb
Ce que suggère jguinch est la solution la plus proche même si ça peut être un poil acrobatique à l'utilisation : un certain nombre de params obligatoires à valeur prédéfinie par défaut
Re: [..] Les fonctions à nombre variable de paramètres
Posté : mer. 24 déc. 2014 11:26
par sozary
Oui en effet!
Merci pour votre aide! Je crois que les tableaux vont rester mes amis pendant encore un peu de temps alors
