Nommer une variable à partir de la valeur d'une autre variable (évaluer, concaté [Résolu]

Signaler
Messages postés
66
Date d'inscription
lundi 23 avril 2007
Statut
Membre
Dernière intervention
26 mars 2019
-
NHenry
Messages postés
14656
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
29 février 2020
-
Bonjour,
Je suis débutant (donc, merci d'avance pour votre compréhension ;)
Voila, j'ai jusqu'à présent programmé en ActionScript, et je veux porter mon application en VB.

En ActionScript, je pouvais déclarer dynamiquement une variable et lui donnant une valeur extraite d'une autre variable (concaténation).
Je lisais un fichier XML comprenant: 'nom de l'article', 'valeur', 'poids', 'couleur',...
et je pouvais, à la volée, créer un tableau (à moins que ce ne soit un objet avec des propriétés?!), dont l'écriture se faisait ainsi:

* la variable 'article' récupère la valeur venant d'un fichier xml
article = this.firstChild.attributes.name
(ex: article= avion)
* cette valeur est alors utilisée dans la déclaration d'un nouvel objet, portant comme nom la valeur de cette variable
_root[article] = {poids:xmlpoids, couleur:xmlcouleur, prix:xmlprix};

Sur Flash, cette concaténation se faisait par l'usage des [] autour du nom.
Quand on agit de cette façon dans Flash, que ce soit pour lire ou écrire, le texte compris entre les [] est alors évalué comme étant le nom de l'objet/variable/tableau

Remarqué également qu'au passage, des propriétés sont créées (poids,couleur,prix) et remplies des valeurs venant du fichiers XML


Donc..;-) comment puis arriver à cette même "souplesse" avec VB: créer un objet dynamiquement, en le nommant (en l'évaluant) à partir d'une valeur d'une autre variable...et en lui créant/attribuant des propriétés au passage?!
(et si ce n'est pas possible, comment dois-je m'y prendre autrement?)

Je vous remercie de m'avoir lu, j'espère que j'ai été clair...et d'avance merci pour votre aide!

3 réponses

Messages postés
14656
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
29 février 2020
139
Bonjour,

Regardes l'objet Dictionary(Of ...) il te permet de lier une valeur à une clé, cette clé peut être un texte.

Mon site
Messages postés
66
Date d'inscription
lundi 23 avril 2007
Statut
Membre
Dernière intervention
26 mars 2019
1
NHenry,
Merci pour ta réponse, qui m'a aiguillé sur la bonne voie.
Voici le code utilisé...si cela devait en interesser d'autres.
Merci

Private Class Data
  Public Property Poids As Decimal
  Public Property Couleur As String
  Public Property Prix As Decimal
 End Class

 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
  Dim d As New Dictionary(Of String, Data)
  d.Add("avion", New Data With {.Poids 15, .Couleur "Bleu", .Prix = 15000})
  d.Add("vélo", New Data With {.Poids 0.02, .Couleur "Rouge", .Prix = 7})
  MessageBox.Show(d("vélo").Poids)
 End Sub
Messages postés
14656
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
29 février 2020
139
Bonjour,

Si ton problème est résolu, merci de marquer "Réponse acceptée" sur le ou les messages qui t'ont aidés.

Mon site