Manipulation de Tableaux d'objets

KOBAXU Messages postés 10 Date d'inscription vendredi 2 avril 2010 Statut Membre Dernière intervention 23 août 2010 - 15 avril 2010 à 14:12
KOBAXU Messages postés 10 Date d'inscription vendredi 2 avril 2010 Statut Membre Dernière intervention 23 août 2010 - 16 avril 2010 à 08:58
Bonjour à tous,

J'ai toujours quelques problèmes avec les NEW et autres instanciations ...

Je m'explique:

J'ai créé une Classe, qu'on appellera MAISON. Cette CLASSE a deux propriétés: Adresse (qui est une Interface) et Famille (qui est une Classe que j'ai créée).

PROBLEME 1:

Lorsque je créé ma classe MAISON, j'ai l'avertissement suivant "la variable Adresse est utilisée avant qu'une valeur ne lui ait été assignée. Une exception de référence null peut se produire au moment de l'exécution"

J'ai pourtant un "Get/End Get" classique lors de la création de MAISON:

Public Property Adresse() As toto.IAdresse
Get

Return Adresse

End Get
.
.
.
End Property

Déjà, ça commence mal ...


PROBLEME 2:

Je créé un GroupeMAISON (variable globale) dans mon module principal, il s'agira comme attendu d'un tableau de MAISON:

Dim GroupeMAISON() as MAISON

je commence par un reDim:
reDim GroupeMAISON(0 To 4)

je créé les éléments de mon tableau:
For i = 0 To 4
GroupeMAISON(i) = New MAISON
Next

Jusque là, tout va bien ... mais lorsque je cherche à "renseigner" GroupeMAISON(), ça se gate:

si j'écris:
GroupeMaison(0).adresse.numero="21", j'ai le message suivant "la référence d'objet n'est pas définie à une instance d'objet" ... Il me semble pourtant avoir tout bien préparé ...

Avez vous une idée du problème?

7 réponses

cs_GG29 Messages postés 326 Date d'inscription vendredi 23 décembre 2005 Statut Membre Dernière intervention 8 février 2011 17
15 avril 2010 à 14:41
En gros tu demandes d'accéder à des objets (Adresse, etc) qui n'existent pas. Avant de les utiliser il faut les instancier (les créer si tu préfères).

Par exemple
Dim m as Maison
m = New Maison


Il faut faire de même avec adresse et les autres classes.

---
Généralement le bug se situe entre le clavier et la chaise.
Le temps est une "chose" introuvable dont l'existence ne fait aucun doute.
0
KOBAXU Messages postés 10 Date d'inscription vendredi 2 avril 2010 Statut Membre Dernière intervention 23 août 2010
15 avril 2010 à 15:26
Merci GG,
J'ai créé mon tableau de MAISON (GroupeMAISON), cela ne suffit pas?

Si chaque maison (groupeMAISON(i) pour i=0 à 4) est créée avec le NEW (GroupeMAISON(i) = New MAISON ), cela veut dire que chaque les propriétés de chacune (qui sont une Interface et une CLASSE) sont crées, non?
0
cs_GG29 Messages postés 326 Date d'inscription vendredi 23 décembre 2005 Statut Membre Dernière intervention 8 février 2011 17
15 avril 2010 à 15:34
Quand tu instancies une maison, ca ne veut pas dire que l'adresse et la famille sont initialisées. C'est à toi de le faire.


---
Généralement le bug se situe entre le clavier et la chaise.
Le temps est une "chose" introuvable dont l'existence ne fait aucun doute.
0
KOBAXU Messages postés 10 Date d'inscription vendredi 2 avril 2010 Statut Membre Dernière intervention 23 août 2010
15 avril 2010 à 16:21
Vu.

Mais je pense que le fait que Adresse soit une Interface me créé un souci. Je m'explique:

D'habitude, j'utilise Adresse "seule": pas de souci pour créer puis instancier un tableau d'adresse par exemple:

Dim Adresse() as XXX.IAdresse

puis ReDim Adresse(0 to 4)
puis Adresse(i)= XXX.CreateAdresse()

Ca fonctionne sans problème. La méthode CreateAdresse de XXX remplace le NEW si j'ai bien compris.

Problème: Si je défini Adresse comme une classe de MAISON:

public Class MAISON
Public Property Adresse() As XXX.IAdresse
Get

Return Adresse

End Get
Set(ByVal value As XXX.IAdresse)

End Set
End Property
.
.
.

End Class


Je n'arrive plus à instancier...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_GG29 Messages postés 326 Date d'inscription vendredi 23 décembre 2005 Statut Membre Dernière intervention 8 février 2011 17
15 avril 2010 à 16:57
Dim m as Maison
m = New Maison
m.Adresse = XXX.CreateAdresse()



---
Généralement le bug se situe entre le clavier et la chaise.
Le temps est une "chose" introuvable dont l'existence ne fait aucun doute.
0
KOBAXU Messages postés 10 Date d'inscription vendredi 2 avril 2010 Statut Membre Dernière intervention 23 août 2010
15 avril 2010 à 17:42
C'est bien ce que je fais:

'Création des éléments du tableau
For i = 0 To 4
GroupeMAISON(i) = New MAISON
GroupeMAISON(i).Adresse = XXX.createAdresse()
Next


puis ca plante sur :
GroupeMaison(0).adresse.numero="21"

J'ai le message suivant "la référence d'objet n'est pas définie à une instance d'objet" ... Je deviens chèvre ...
0
KOBAXU Messages postés 10 Date d'inscription vendredi 2 avril 2010 Statut Membre Dernière intervention 23 août 2010
16 avril 2010 à 08:58
Pas de spécialiste?
0
Rejoignez-nous