Convertir chaine de caractère en nom de variable

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
ArkhaDae
Niveau 1
Niveau 1
Messages : 14
Enregistré le : sam. 08 nov. 2014 18:39
Status : Hors ligne

Convertir chaine de caractère en nom de variable

#1

Message par ArkhaDae »

Bonjour,

J'aimerais "appeler" des variables sans avoir à les énumérer toutes une par une, je m'explique:

Je crée une chaine de caractère : "Case10"
Il faudrait que le scrpit me prenne en compte cette chaine de caractère en tant qu'un nom de variable, car j'aimerais par exemple faire par la suite Case10=523 :D

En espérant avoir été clair, j'attends vos réponses avec impatiente
Bonne soirée
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: Convertir chaine de caractère en nom de variable

#2

Message par orax »

La fonction Eval() ?
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 : 2273
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Convertir chaine de caractère en nom de variable

#3

Message par jchd »

C'est toujours une mauvaise idée que rien ne justifie, qui complique inutilement et rend moins efficace du code qui devrait rester clair.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: Convertir chaine de caractère en nom de variable

#4

Message par jguinch »

La fonction est plutôt Assign. Mais comme le dit JC, peu (voir aucun) cas ne justifie une telle utilisation.
Voir plutôt l'utilisation de tableaux.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
ArkhaDae
Niveau 1
Niveau 1
Messages : 14
Enregistré le : sam. 08 nov. 2014 18:39
Status : Hors ligne

Re: Convertir chaine de caractère en nom de variable

#5

Message par ArkhaDae »

Effectivement j'avais essayé avec eval mais sans succès, surrement dû à une erreur de ma part
Je ne sais pas pourquoi j'avais complétement oublié les tableaux qui pour ce script le rendrait beaucoup beaucoup plus simple

Merci en tout cas de votre aide c'est un réel plaisir de pouvoir compter sur vous :D
ArkhaDae
Niveau 1
Niveau 1
Messages : 14
Enregistré le : sam. 08 nov. 2014 18:39
Status : Hors ligne

Re: Convertir chaine de caractère en nom de variable

#6

Message par ArkhaDae »

Désolé pour le double post qui risque d'être HS comme c'est un problème de GUI

Mon problème est dans les noms de label, j'ai 16 label qui correspondent à chaque case de mon tableau (4x4)
Donc au début je crée le tableau dans la gui: GUICtrlCreateLabel($L[$j],100+$j*40,35+$i*15,15,15) avec deux boucles for.

Le problème c'est quand je veux mettre à jour les données en utilisant :GUICtrlSetData, il me faudrait le nom de chaque label or j'ai pas envie de créer à la main les 16 noms de label et donc j'aimerais savoir s'il y a un moyen de les créer en même temps que je crée mes label
(sinon je peux continuer à créer des label par dessus mais j'aimerais tout de même éviter)

Merci d'avance pour vos réponses, sur ce bon ap'
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2273
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Convertir chaine de caractère en nom de variable  

#7

Message par jchd »

Deux possibilités "propres" : un Map (tableau associatif) permettant d'assigner un nom ou une valeur quelconque (sauf entier 64 bits) à chaque contrôle, donc avec un fonctionnement proche de ASSIGN, ou un simple tableau 4x4 où l'on place les identificateurs.
Les variables Map ne sont disponibles que sous la beta, mais depuis le temps qu'elle est beta et qu'il n'y a pas de problème signalé on peut la considrer comme solide.

Recréer les labels sans détruire les anciens provoquerait une fuite mémoire à terme, donc à proscrire.

Code : Tout sélectionner

Local $aLabelList = [ _
	"Pot au feu", _
	"Chilli con carne", _
	"Charlotte aux pommes", _
	"Avocat aux crevettes", _
	"Poulet grillé", _
	"Lasagnes", _
	"Salade de fruits", _
	"Crêpe suzette", _
	"Homard grillé", _
	"Salade de tomates", _
	"Purée maison", _
	"Pomme flambée", _
	"Melon au Porto", _
	"Assiete de charcuterie", _
	"Sole meunière", _
	"Osso buco" _
]

; version tableau 4x4
Local $aLabelId[4][4]
; ...
For $i = 0 To 3
	For $j = 0 To 3
		$aLabelId[$i][$j] = GUICtrlCreateLabel($aLabelList[4 * $i + $j], 100 + $j * 40, 35 + $i * 15, 15, 15)
	Next
Next
; ...
GUICtrlSetData($aLabelId[1][3], "Nouveau libellé")


; version Map
Local $mLabel[]
; ...
For $i = 0 To 3
	For $j = 0 To 3
		$mLabel[$aLabelList[4 * $i + $j]] = GUICtrlCreateLabel($aLabelList[4 * $i + $j], 100 + $j * 40, 35 + $i * 15, 15, 15)
	Next
Next
; ...
GUICtrlSetData($mLabel["Crêpe suzette"], "Nouveau libellé")
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
ArkhaDae
Niveau 1
Niveau 1
Messages : 14
Enregistré le : sam. 08 nov. 2014 18:39
Status : Hors ligne

Re: Convertir chaine de caractère en nom de variable

#8

Message par ArkhaDae »

Bien, merci beaucoup pour ton aide qui a résolu mon problème :D
PS: ca facilite carrement l'affichage c'est cool :p
Répondre