Utiliser un tableau à 2 dimensions avec une structure [Résolu]

Signaler
Messages postés
21
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
8 mars 2012
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
c'est mon premier dev en vb.net en vb6 j'utilise les strutures TYPE et tout fonctionne correctement.
je n'arrive pas à remplir le tableau dans ma structure

'voici ma partie déclaration
' Structure d'un carton
Public Structure Carton
Dim Numero(,) As Short
Dim Sortie(,) As Boolean

Public Sub Initialize()
ReDim Numero(9, 2)
ReDim Sortie(8, 2)
End Sub
End Structure
Public TabCarton() As Carton

'Dans mon code du load de la form
' Lecture du nombre de carton
NbCarton = CInt(Get_Private_Profile_String("Cartons", "nb", "", FichierIni))

' Init Variables
TabCarton = New Carton(NbCarton) {}
TabCarton.Initialize()

' je remplis ma structure
For i = 0 To 8
'Ligne 1
If TxtLigne1(i).Text <> "" Then
Le problème est ici quand j'écris
TabCarton(Carton).Numero(i, 0) = CInt(TxtLigne1(i).Text)
TabCarton(Carton).Sortie(i, 0) = False
....

Qu'est ce que j'ai oublier ou mal fait ???
merci par avance d'une aide
TR

6 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
228
Bonjour,
Tabcarton est déjà une structure en soi, puisque définie as carton !
=>>
Tabcarton.numero(1,0) pointe donc vers l'élément 1,0 du tableau numero, lui-même membre de tabcarton

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
21
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
8 mars 2012

ok erreur de ma part
j'ai changer mon code en renomment ma variable local au sub de carton en MyCarton

Mais même pb voici le nouveau code

For i = 0 To 8
'Ligne 1
If TxtLigne1(i).Text <> "" Then
TabCarton(MyCarton).Numero(i, 0) = CInt(TxtLigne1(i).Text)
Erreur L'exception NullRerenceException n'a pas été gérée pour la ligne ci-dessus
je me demande si Numero est bien déclarer comme tableau car en passant la sourie en mode débug j'ai TabCarton(1).Numero Nothing
....

aurais-tu un exemple de code pour que je m'adapte ?
TR
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
228
TabCarton(MyCarton).Numero(i, 0) = CInt(TxtLigne1(i).Text)

tu persistes et signes !
Relis-moi !
Tabcarton est une structure. l'un de ses membres est numero (et c'est un tableau) ===>>
TabCarton.Numero(i, 0) = ....


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
21
Date d'inscription
lundi 17 mars 2003
Statut
Membre
Dernière intervention
8 mars 2012

j'ai trouvé, mais il existe peut être mieux vous de me le dir...
Puisque je veux avoir un tableau avec comme définition une structure qui contient des tableaux.
il faut relancer TabCarton(NbCarton).Initialize() à chaque fois qu'on ajoute un nouvel indice au tableau TabCarton
voici mon code corrigé
'voici ma partie déclaration
' Structure d'un carton
Public Structure Carton
Dim Numero(,) As Short
Dim Sortie(,) As Boolean

Public Sub Initialize()
ReDim Numero(9, 2)
ReDim Sortie(8, 2)
End Sub
End Structure
Public TabCarton() As Carton

'Dans mon code du load de la form
' Init Variables
NbCarton = +1
ReDim TabCarton(NbCarton)
TabCarton(NbCarton).Initialize()

'je remplis ma structure
For i = 0 To 8
'Ligne 1
If TxtLigne1(i).Text <> "" Then
Le problème est ici quand j'écris
TabCarton(MyCarton).Numero(i, 0) = CInt(TxtLigne1(i).Text)
TabCarton(MyCarton).Sortie(i, 0) = False
....

TR
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
Salut
drole de structure avec une Public Sub Initialize()

TabCarton = New Carton(NbCarton)

ici une tu a déja une erreur
carton has no constructors

pourquoi faire une sub pour redimensionner numero
et sortie dans ta structure ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
228
Pour moi, la chose est simple :
c'est tout simplement
Public TabCarton As Carton
puis ce que j'en ai déjà dit plus haut


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient