Page 1 sur 1

[R] Boucle créant une variable a chaque tours

Posté : jeu. 17 juil. 2008 18:36
par Kurdy
Bonjour

Je voudrais faire une boucle qui crée une variable différente à chaque tours

Pour l'instant j'ai

Code : Tout sélectionner

for $i = 1 to $y ; $y est préalablement définit
    $b= Random (1,5000)
    $c= Ceiling ($b)
MsgBox (1, "projet", $c)
Next
Le probleme c'est qu'évidement il me donne 9 fois le même chiffre, je voudrais qu'il fasse des

c= x
c1 = z
c2 = w

C'est possible?

Re: Faire une boucle créant une variable a chaque tours

Posté : jeu. 17 juil. 2008 19:20
par sylvanie
Bonsoir,
on peut passer par 2 méthodes
- création d'un tableau, et chaque composante servira de variable
- création de variables dynamique grâce à Assign et Eval

voici un code d'illustration
► Afficher le texte

Re: [..] Faire une boucle créant une variable a chaque tours

Posté : jeu. 17 juil. 2008 20:07
par Kurdy
J'ai finit par comprendre au moins la variable dynamique :D

Par contre j'ai un probleme
j'aimerais afficher la valeur des variables ainsi crées mais je ne sais pas non plus comment faire

voici mon code:
► Afficher le texte
Le probleme c'est que $var n'existe pas puisqu'elle a été créée sous le nom de Var1, Var2, Var3...

J'imagine que c'est par le biais de Eval mais je ne le comprend pas...

mais comment lui faire comprendre que je veux afficher toutes les Var qu'il a créé? j'ai essayé $Var$i mais il ne la connait pas plus.

J'ai essayé "Var" $i mais là il m'affiche Var1 donc le nom de a variable mais pas sa valeur

J'imagine que c'est grâce à Eval mais je ne comprend pas son fonctionnement...

Re: [..] Faire une boucle créant une variable a chaque tours

Posté : jeu. 17 juil. 2008 22:56
par sylvanie
il faut remplacer

Code : Tout sélectionner

MsgBox (1, "projet", $Var)
 
par

Code : Tout sélectionner

MsgBox (1, "projet", Eval("Var"&$i))
Eval va evaluer l'expression, donc ici $vali (i=0...) cependant tu ne peux pas effectvement appeler $val0 par exemple, car cette variable n'existe pas sans le code même ...

Re: [..] Faire une boucle créant une variable a chaque tours

Posté : jeu. 17 juil. 2008 23:02
par Kurdy
Aaaah!

Tout s'éclaire ^^ je vais tester! merci

Ca marche, parfaitement, merci beaucoup, par contre je vais étudier un peu cette formule histoire de m'en servir à l'avenir ^^

Re: Faire une boucle créant une variable a chaque tours

Posté : sam. 19 juil. 2008 11:00
par SagePourpre
Pour les utiliser en dehors de la boucle, je dois les déclarer mais existe t-il un moyen de déclarer ces variables autrement que

Code : Tout sélectionner

Local $var1, $var2, $var3...
?

Re: [R] Boucle créant une variable a chaque tours

Posté : sam. 19 juil. 2008 14:48
par sylvanie
Lorqu'Autoit crée une assignation $toto=1, toto est alors déclarée et a une portée globale au script
La fonction Assign fait de même par défaut, mais on peut forcer la main avec le flag (dernier paramètre optionnel) :

[optional] controls the way that variables are assigned (add required options together):
0 = (default) Create variable if required
1 = Force creation in local scope
2 = Force creation in global scope
4 = Fail if variable does not already exist

Dans l'exemple que j'ai donné avec, les variables $var0, $var1 ... sont utilisable en dehors de la boucle alors qu'elles n'avaient pas été déclarées, contrarement à l'exemple avec le tableau qui lui était déclaré avant asignation.
Pour t'en assurer, insère

Code : Tout sélectionner

ConsoleWrite("$var"&$ind&"="&Eval("var0")&@CRLF)
 
après la boucle, et tu constateras que $var0 est toujours connue