Convertir chaine de caractère en nom de variable
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
Convertir chaine de caractère en nom de variable
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
En espérant avoir été clair, j'attends vos réponses avec impatiente
Bonne soirée
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
En espérant avoir été clair, j'attends vos réponses avec impatiente
Bonne soirée
- orax
- 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
La fonction
Eval()
?De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
- jchd
- 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
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é.
Re: Convertir chaine de caractère en nom de variable
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.
Voir plutôt l'utilisation de tableaux.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Re: Convertir chaine de caractère en nom de variable
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
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
Re: Convertir chaine de caractère en nom de variable
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'
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'
- jchd
- 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
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.
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é.
Re: Convertir chaine de caractère en nom de variable
Bien, merci beaucoup pour ton aide qui a résolu mon problème
PS: ca facilite carrement l'affichage c'est cool :p
PS: ca facilite carrement l'affichage c'est cool :p