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

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Kurdy
Niveau 2
Niveau 2
Messages : 17
Enregistré le : dim. 13 janv. 2008 13:40
Status : Hors ligne

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

#1

Message 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?
Modifié en dernier par Tlem le ven. 18 juil. 2008 00:43, modifié 1 fois.
Raison : Ajout des balises de code
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

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

#2

Message 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
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Kurdy
Niveau 2
Niveau 2
Messages : 17
Enregistré le : dim. 13 janv. 2008 13:40
Status : Hors ligne

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

#3

Message 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...
Modifié en dernier par Kurdy le jeu. 17 juil. 2008 23:01, modifié 1 fois.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

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

#4

Message 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 ...
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Kurdy
Niveau 2
Niveau 2
Messages : 17
Enregistré le : dim. 13 janv. 2008 13:40
Status : Hors ligne

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

#5

Message 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 ^^
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

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

#6

Message 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...
?
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

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

#7

Message 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
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Répondre