OVH Cloud OVH Cloud

Accéder à une variable par son nom

3 réponses
Avatar
GnarlyYoyo
La question a l'air très idiote...
Est-il possible d'accéder à une variable si on connaît son nom sous la forme
d'une chaîne de caractères?
Cela supposerait que VB conserve dans le code exécuté les noms des variables
tels qu'ils ont été édités...

Yoann

3 réponses

Avatar
Picalausa François
"GnarlyYoyo" a écrit dans le message de news:
442ee3c5$0$1619$
La question a l'air très idiote...
Est-il possible d'accéder à une variable si on connaît son nom sous la
forme d'une chaîne de caractères?
Cela supposerait que VB conserve dans le code exécuté les noms des
variables tels qu'ils ont été édités...




Hello,

En général, ce genre de question se pose pour la gestion d'un grand nombre
de variables (éventuellement générées dynamiquement).
Pour ce genre de cas, tu peux employer des tableaux (éventuellement
dynamiques) et soit accéder directement aux éléments par leur index, soit
avoir un tableau secondaire de nom que tu parcoures à la recherche de
l'index correspondant.
Tu peux aussi employer des collections, en fonction des données à gérer.
Dans ce cas, la clé (key) de chaque élément permet un accès par le nom.
Sinon, si les données correspondent à des saisies utilisateur, il est aussi
possible d'utiliser un moteur de bases de données...
Sinon, indique-nous plus précisément ce que tu cherches à faire!

--
Picalausa François
Avatar
Patrice Henrio
La question est loin d'être idiote et l'accès à une variable par son nom en
tant que chaîne de caractères est utilisé depuis très longtemps dans des
langages objets comme smalltalk (je crois même en Logo), on le trouve aussi
en php : il s'agit de se référer à une variable à travers son nom. Par
exemple on peut stocker les variables et leur valeurs dans un fichier texte
et les récupérer lors du prochain lancement du logiciel en lisant le nom
puis sans test sur celui-ci affecter directement la valeur. On peut aussi
avoir ce cas là : quatre variables R1, R2, H1 et H2. On peut ainsi récupérer
H1 à partir de R1 et H2 à partir de R2 en manipulant des chaînes.

Bien entendu, il y a maintenant plus simple pour faire cela avec des types
utilisateurs, des classes ...

Je crois qu'en VB ce n'est pas possible tel quel.



"GnarlyYoyo" a écrit dans le message de news:
442ee3c5$0$1619$
La question a l'air très idiote...
Est-il possible d'accéder à une variable si on connaît son nom sous la
forme d'une chaîne de caractères?
Cela supposerait que VB conserve dans le code exécuté les noms des
variables tels qu'ils ont été édités...

Yoann



Avatar
GnarlyYoyo
J'avais deux idées en tête, mais les deux peuvent finalement être traitées
autrement:

- J'ai beaucoup de labels sur une forme et je donne la possibilité à
l'utilisateur de les renommer pendant l'exécution du programme. Les
résultats sont conservés sous la forme: Nom du label - Caption du label dans
un fichier. Je viens de réaliser que les controls dans la collection
Controls ont une clé, qui est justement leur nom. Cela me permet de
remplacer les noms par défaut par les noms du fichier sans itérer sur les
controls de la forme (ce qui n'était pas si mal non plus).

- Je voulais écrire du code plus concis pour contourner le fait que les
objets qui récupèrent des évènements de controls doivent être des variables
globales. J'effectuais autant de déclarations et d'assignements que le
nombre de controls dont j'avais besoin. Finalement il est possible de
résoudre ce problème plus simplement en déclarant une unique collection
globale, qui va recueillir toutes les références des objets créés dans une
boucle.

Yoann





"Patrice Henrio" a écrit dans le message de
news:
La question est loin d'être idiote et l'accès à une variable par son nom
en tant que chaîne de caractères est utilisé depuis très longtemps dans
des langages objets comme smalltalk (je crois même en Logo), on le trouve
aussi en php : il s'agit de se référer à une variable à travers son nom.
Par exemple on peut stocker les variables et leur valeurs dans un fichier
texte et les récupérer lors du prochain lancement du logiciel en lisant le
nom puis sans test sur celui-ci affecter directement la valeur. On peut
aussi avoir ce cas là : quatre variables R1, R2, H1 et H2. On peut ainsi
récupérer H1 à partir de R1 et H2 à partir de R2 en manipulant des
chaînes.

Bien entendu, il y a maintenant plus simple pour faire cela avec des types
utilisateurs, des classes ...

Je crois qu'en VB ce n'est pas possible tel quel.



"GnarlyYoyo" a écrit dans le message de news:
442ee3c5$0$1619$
La question a l'air très idiote...
Est-il possible d'accéder à une variable si on connaît son nom sous la
forme d'une chaîne de caractères?
Cela supposerait que VB conserve dans le code exécuté les noms des
variables tels qu'ils ont été édités...

Yoann