[Catégorie modifiée .Net --> VB6] Structure imbriquée en VB6
cs_magicgus
Messages postés206Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention14 septembre 2011
-
30 août 2010 à 21:35
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
31 août 2010 à 00:38
Bonjour à tous
Dans une de mes applis je commence l'intégration d'un module de méteo, ce dernier charge ses infos d'après un xml provenant du net.
Je souhaite donc pour clarifié le code créer un objet "data" qui contient toutes les données extraites, à savoir qu'il y'a des données météo pour 3 jours avec quelques infos à chaque fois.
Je me suis donc lancé dans la création de structure "Imbriquées" pour tout bien regrouper...
Dim XmlVar As String
'Structure globale
Public Type TypeData
Jour0 As varTypeJour0
'Jour1 As TypeJour1
'Jour2 As TypeJour2
End Type
'Structures Jour 0
Private Type TypeJour0
Matin As TypeJour0Matin
Midi As TypeJour0Midi
ApresMidi As TypeJour0ApresMidi
Soir As TypeJour0Soir
End Type
Private Type TypeJour0Matin
Temperature As String
Conditions As String
Image As String
End Type
Private Type TypeJour0Midi
Temperature As String
Conditions As String
Image As String
End Type
Private Type TypeJour0ApresMidi
Temperature As String
Conditions As String
Image As String
End Type
Private Type TypeJour0Soir
Temperature As String
Conditions As String
Image As String
End Type
'Structures Jour 1
Private Type TypeJour1
Matin As TypeJour1Matin
Midi As TypeJour1Midi
ApresMidi As TypeJour1ApresMidi
Soir As TypeJour1Soir
End Type
Private Type TypeJour1Matin
Temperature As String
Conditions As String
Image As String
End Type
Private Type TypeJour1Midi
Temperature As String
Conditions As String
Image As String
End Type
Private Type TypeJour1ApresMidi
Temperature As String
Conditions As String
Image As String
End Type
Private Type TypeJour1Soir
Temperature As String
Conditions As String
Image As String
End Type
'Structures Jour 2
Private Type TypeJour2
Matin As TypeJour2Matin
Midi As TypeJour2Midi
ApresMidi As TypeJour2ApresMidi
Soir As TypeJour2Soir
End Type
Private Type TypeJour2Matin
Temperature As String
Conditions As String
Image As String
End Type
Private Type TypeJour2Midi
Temperature As String
Conditions As String
Image As String
End Type
Private Type TypeJour2ApresMidi
Temperature As String
Conditions As String
Image As String
End Type
Private Type TypeJour2Soir
Temperature As String
Conditions As String
Image As String
End Type
Dim Data As TypeData
J'aimerais bien pouvoir interagir avec mon objet data de la sorte :
MsgBox Data.Jour2.Matin.Temperature
Mais l'intelissence ne rentre que dans la premiere structure puis plus rien...
J'ai aussi éssayé de recréer des variables pour chaques niveau structurel comme pour DATA mais même résultat...
Je fait peut être fausse route, en faite je ne sait même pas si l'on peut imbriqué des structures en vb6, et si c'est le cas, je ne voit pas comment faire...
cs_ghuysmans99
Messages postés3983Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 30 août 2010 à 22:46
Il n'est pas nécessaire (et c'est même complètement idiot) de définir un type par variable ... M'enfin on va pas te taper dessus pour ça hein . Pour gérer plusieurs jours, il te suffit d'utiliser un tableau. Si tu veux ajouter un jour, fais un Redim Preserve. Ton code se résume donc en ceci :
Option Explicit
Private Type TJourMoment
Temperature As String
Conditions As String
Image As String
End Type
Private Type TJour
Matin As TJourMoment
Midi As TJourMoment
ApresMidi As TJourMoment
Soir As TJourMoment
End Type
Private Jours() As TJour
Private Sub Form_Load()
ReDim Jours(1) 'un tableau commence à 0 -> 2 jours sont alloués
With Jours(0)
.Matin.Conditions = "Dégagé"
'[...]
End With
End Sub
VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 31 août 2010 à 00:38
+ Bien mettre les définitions des types dans l'ordre : Si tu utilises le type varTypeJour0 dans typeData, il faut que varTypeJour0 soit défini avant typeData