[R] Contenu d'une variable a la place de son nom.

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Makadamm
Niveau 1
Niveau 1
Messages : 7
Enregistré le : jeu. 07 janv. 2016 00:50
Status : Hors ligne

[R] Contenu d'une variable a la place de son nom.

#1

Message par Makadamm »

Sujet Résolu, merci à Orax.

Bonjour la communauté, j’espère que tout roule pour chacun d'entre vous ,)

Voila voila je poste cette foi si car je trouve vraiment pas la solution a mon problème, qui est surement toute bête...

Histoire de pas sortir tout le programme, j'ai refait dans un script le principe de fonctionnement de se qui me bloque,

Je sais pas trop comment l'expliquer simplement donc en gros :

Au lieu de récupérer les contenus de mes variables $ID1 et $IDA1 puis $ID2 et $IDA2 etc... , et bien je récupère leur nom...

Code : Tout sélectionner

Global $ID1 = "1001", $IDA1 = " Objet de grande taille"
Global $ID2 = "AD45", $IDA2 = " Cassette vidéo"
Global $ID3 = "X8D6", $IDA3 = " Film interdit au mineur"
Global $M = "AD45", $I = "N°1"
Global $5 = 1

While 1
Assign("r", "$ID" & $5)
Local $ID = Eval("r")
Assign("rr", "$IDA" & $5)
Local $IDA = Eval("rr")
;~ Attention oblige a cliqué 15 fois sur ok 
;~ MsgBox(64, "Lecture la variable $ID" & $5, $ID) ; Ici au premier passage je doit récupérer le contenu de la variable $ID1, hors la j'ai juste son nom, pas le contenu, idem pour les 14 autres itérations
;~ Attention oblige a cliqué 15fois sur ok 
;~ MsgBox(64, "Lecture la variable $IDA" & $5, $IDA) ; Ici au premier passage je doit récupérer le contenu de la variable $IDA1, hors la j'ai juste son nom, pas le contenu, idem pour les 14 autres itérations
If StringCompare( $M, $ID) = 0 Then
	$Out1 = ( "__" & $M & "__" & @CRLF)
	$Out11 = ( "__" & $I & "__" & @CRLF)
	$Out111 = ( $IDA& @CRLF)
	MsgBox(64,"Contenu si 'If StringCompare' fonctionne :", $Out1 & @CRLF & $Out11 & @CRLF & $Out111) ; Ducoup vue que j'ai pas le contenu mais le nom de la variable,  sa ne fonctionne pas.
	ExitLoop
Elseif $5 = 15 Then
	MsgBox(64, "WARNING"," ID inconnu") ; Si je suis arrivé ici, c'est que mon id n'est pas présent dans la base de connaissance. Je traite les variables inconnu plus loin dans mon programme, la bas j'ai pas de soucie.
	ExitLoop
Else
	$5 = $5 + 1
EndIf
Sleep(25)
WEnd
Exit

Donc si jamais quelqu'un a :

- une solution.
- une critique constructive.
- un lien ou je pourrais pêcher la solution.

qu'il s'exprime s.v.p. ! Merci.


EDIT 1 :
Solution d'Orax :

Code : Tout sélectionner

    Assign("r", Eval("ID" & $5))
        Local $ID = Eval("r")
        Assign("rr", Eval("IDA" & $5))
        Local $IDA = Eval("rr")
1000 fois Merci Orax ;) 2éme fois cette années que tu me sort du trou ou j’étais bloqué !! Je te souhaite une bonne vie ,)

Pour l'histoire du tableau j'avais vue des sujets la dessus mais j'ai pas trop compris comment l'adapter a mon script, bref, merci !
Modifié en dernier par Makadamm le dim. 07 août 2016 16:18, modifié 2 fois.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Contenu d'une variable a la place de son nom.  

#2

Message par orax »

Assign("r", Eval("ID" & $5))
   Local $ID = Eval("r")
   Assign("rr", Eval("IDA" & $5))
   Local $IDA = Eval("rr")
Je n'ai pas encore regardé plus en détail, mais peut-être qu'à la place d'Eval et Assign il serait possible d'utiliser un tableau à deux dimensions.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Contenu d'une variable a la place de son nom.

#3

Message par jchd »

Assign et Eval devraient avoir été passés à la trappe depuis longtemps.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [R] Contenu d'une variable a la place de son nom.

#4

Message par orax »

Par exemple...
Global $ID[][] = [ _
      ["1001", "Objet de grande taille"], _
      ["AD45", "Cassette vidéo"], _
      ["X8D6", "Film interdit au mineur"]]

Global $M_ = "AD45"

Local $ID_, $IDA_, $Out

For $i = 0 To UBound($ID) - 1
   $ID_ = $ID[$i][0]
   $IDA_ = $ID[$i][1]

   ConsoleWrite($i & " -> " & $ID_ & " -> " & $IDA_ & @CRLF)
   If $M_ = $ID_ Then
      $Out = "__" & $M_ & "__" & @CRLF & @CRLF
      $Out &= "__N°" & $i & "__" & @CRLF & @CRLF
      $Out &= $IDA_ & @CRLF
      MsgBox(64, "Contenu si '$M_ = $ID_'", $Out)
      ExitLoop
   EndIf
Next
Ce n'est pas forcément la meilleure manière de faire ; il y a d'autres solutions qu'un tableau, mais c'est quand même moins pire qu'Assign + Eval.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Répondre