[vb.net] access a un tableau a l'interrieur d'une structure

access a un tableau a l'interrieur d'une structure [vb.net] - VB/VBA/VBS - Programmation

Marsh Posté le 04-10-2006 à 19:07:43    

Bonjour à tous! voila j'ai une structure qui a cette tete la
 

Code :
  1. Structure Livre
  2.         Public Titre As String
  3.         Public ISBN As String
  4.         Public jj As String
  5.         Public mm As String
  6.         Public aa As String
  7.         Public nbA As Integer 
  8.         Public auteur() As String 
  9.         Public GrComThMat As String
  10.         Public niveau As String
  11.         Public DVDCD As String
  12.         Public Sub Initialize()
  13.             ReDim auteur(3)
  14.         End Sub
  15.     End Structure

On a donc un tableau "auteur" de 3 lignes, à l'interieur de cette structure, auquel je n'arrive pas à affecter de valeur. Voici ma syntaxe :  
 
 
 

Code :
  1. Tlivre(i, j).auteur(0) = "salut"

L'erreur signalée est la suivante : "La référence d'objet n'est pas définie à une instance d'un objet"
D'où vient l'erreur? De ma déclaration de structure ou de celle de mon affectation et coment la corriger?  
Merci a vous =)

Reply

Marsh Posté le 04-10-2006 à 19:07:43   

Reply

Marsh Posté le 04-10-2006 à 21:35:41    

tu as fais un Tlivre(i,j).auteur = new String(3) {} avant l'affectation ?


---------------
Instagram - Mon PVT en Australie.
Reply

Marsh Posté le 07-10-2006 à 11:17:17    

ah non du tout je débute completement en VB je ne sais pas vraiment coment ça marche :(. Notre prof qui nous demande un tp sans aucun cour, et pas des plus simple apparament.
donc je met  
Tlivre(i,j).auteur = new String(3) {}
et ensuite  
Tlivre(i, j).auteur(0) = "salut"  
c'est ça?

Reply

Marsh Posté le 07-10-2006 à 12:35:24    

ça avance, ça marche avec le programme simplifié, mais pas avec le vrai. Il me met comme message d'erreur :
"Assignation de liaison tardive à un champ de type valeur 'Livre' non valide lorsque 'Livre' represente le résultat d'une expression de liaison tardive"...
J'ai rien compri  
mon code est le suivant :

Code :
  1. FormAppelant.TLivre(FormAppelant.k, FormAppelant.j).auteur = New String(3) {}
  2. FormAppelant.TLivre(FormAppelant.k, FormAppelant.j).auteur(FormAppelant.nbAut) = "Salut"
  3. FormAppelant.nbAut = FormAppelant.nbAut + 1
  4. NomAuteur.Text = ""


TLivre est donc le tableau de structure de type livre, k et j les indices de parcour du tableau (en 2D donc) et auteur c'est le nom du tableau dans la structure Livre, nbAut l'indice de parcour du tableau auteur...

Reply

Marsh Posté le 07-10-2006 à 12:48:22    

J'ai essayé en remplaçant par :  

Code :
  1. FormAppelant.TLivre(0, 0).auteur = New String(3) {}
  2. FormAppelant.TLivre(0, 0).auteur(0) = "Salut"


mais rien a faire il n'en veut pas, je me demande si le probleme ne pourrait pas venir de  

Code :
  1. Private Sub BtnAjout_Click(ByVal....


En fait le programme rempli une partie du tableau de structure  (titre du livre, date etc) avec le formulaire principal, une fois cela fait on clic sur un bouton 'Saisir les auteurs' et on arrive sur mon form2 qui lui doit remplir le tableau "auteur" dans la structure, pour le livre et le type correspondant (Mon tableau de structure est en 2D car le premier indice stocke le nombre de livres et le deuxieme le type : roman = 0 scolaire = 1 etc...)
Est-ce que je dois travailler par ByRef vu que mon tableau a deja commencé a etre rempli dans le premier formulaire et qu'il est declaré dans mon premier formulaire? ou ça n'a rien à voir?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed