Bonjour à tous.
Il y à peut de temps, j'avais posté sur le forum une demande d'aide pour lire une liste dans un fichier de plusieurs liste et savoir où s’arrêter pour interpréter les différentes listes. Exemple : dans mon fichier j'ai
"Liste 1
argument 1
argument 2
etc...
Fin liste 1
Liste 2 :
Argument 1
etc...
Fin liste 2
etc...
"
Sachant qu'à la fin des arguments d'une liste, je n'avais pas "fin de liste X" mais bien "argument X".
On m'à alors redirigé vers une solution bien plus simple : un fichier XML.
Je ne connaissait pas du tout alors j'ai essayé de comprendre les exemples qu'on me donnait et à force de bidouiller et lire relire et l’exécution en pas à pas de visual studio 2013, j'ai compris a peut près ce que je faisait.
Seulement j'ai d'autres problèmes qui s'offrent à moi à présent.
Voici mon code, je vous explique après. (ps : si trop compliqué vous pouvez me mp j'essayerais de clarifier les choses.)
ceci est la partie des classes du fichier XML. (j'ai rajouter une structure pour réaliser un tableau des élèves présent dans mon fichier). Judicieux ?? Pour moi il existe plus simple je pense que c'est de la bidouille. J'attends vos commentaires/critiques/aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 Structure Elève Dim nom As String Dim prenom As String Dim classe As String Dim devoirs As String Dim exercice As String Dim note() As Integer End Structure <XmlRoot("lesclasses")> Public Class LesClasses <XmlElement("classe")> Public Property Classes As New List(Of Classe) End Class Public Class Classe <XmlAttribute("nomclasse")> Public Property Classe As String = "" <XmlElement("eleve")> Public Property Eleves As New List(Of Eleve) End Class Public Class Eleve <XmlAttribute("nom")> Public Property Nom As String = "" <XmlAttribute("prenom")> Public Property Prenom As String = "" <XmlElement("devoir")> Public Property Devoirs As New List(Of Devoir) End Class Public Class Devoir <XmlAttribute("exercice")> Public Property Exercice As String = "" <XmlAttribute("note")> Public Property Note As Integer = 0 End Class
Ensuite la partie lecture de mon fichier XML :
Rien a rajouter je pense.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Private Function LitDataXMLClasses(ByVal filename As String) As LesClasses Try Using objStreamReader As New IO.StreamReader(filename) Try Return DirectCast((New Xml.Serialization.XmlSerializer(GetType(LesClasses))).Deserialize(objStreamReader), LesClasses) Catch ex As Exception MessageBox.Show("Echec de la lecture." & ex.Message) End Try End Using Catch ex As Exception MessageBox.Show("Fichier inaccessible." & ex.Message) End Try Return Nothing End Function
Et là : la seconde partie qui me pose problème :
Lors du chargement de ma page donc, je vais lire le fichier XML et j'ajoute les noms des élèves dans une combobox.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Dim Classesel(compteur_el) As Elève Dim compteur_el As Integer = 0 Dim compteur_dev As Integer = 0 Dim Data As LesClasses = LitDataXMLClasses("classes.xml") Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load For Each cl As Classe In Data.Classes For Each el As Eleve In cl.Eleves Classesel(compteur_el).nom = el.Nom Classesel(compteur_el).prenom = el.Prenom ComboBox1.Items.Add(Classesel(compteur_el).nom & " " & Classesel(compteur_el).prenom) Classesel(compteur_el).classe = cl.Classe For Each no As Devoir In el.Devoirs Classesel(compteur_el).note(compteur_dev) = no.Note Next compteur_el += 1 ReDim Preserve Classesel(compteur_el) Next Next End Sub
Là ou j'ai un problème c'est à cette ligne : "Classesel(compteur_el).note(compteur_dev) = no.Note"
un tableau dans un tableau ça ne prends pas.
J'ai alors pensé à créer un autre tableau portant le même numéro que chaque élèves dans lequel je rajouterais les notes. Encore de la bidouille.
Je n'ai pas compris pourquoi je ne peux pas creer un tableau de notes dans mon tableau d’élèves. Il me met ce message d'erreur :
"Une exception non gérée du type 'System.NullReferenceException' s'est produite dans Bidouille XML.exe
Informations supplémentaires : La référence d'objet n'est pas définie à une instance d'un objet." sur ma ligne. Si j'enlève le tableau j'ai qu'une note et ça fonctionne.
Voila. En gros j'aimerais optimiser tout ça et comprendre pourquoi je ne peux pas créer mon tableau de notes dans mon tableau d'élèves.
Merci.
Partager