Bon, là je sèche. Est ce que quelqu'un sait ce que ce message veut dire: Object reference not set as instance of an object
Pour faire simple, je bosse sur une application qui traite les fichiers ini (lecture, tri, modifications, blabla ).
J'utilise un Treeview pour afficher le contenu d'un fichier ini.
Ce message apparait sous forme d'un popup quand mon treeview ce construit (du moins à la fin).
Mais malgré, le popup, je clique sur OK et les opérations se passent correctement. Ce qui est génant c'est que ce message apprait et je dois cliquer sur OK pour que l'application continue son boulot. Un peu génant quand même
Voici le code impliqué dans la génération de ce message:
1. Extrait de ma classe IniFunctions:
2. Extrait de ma classe principale
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 'Retourne les Keys de la section désirée du fichier ini Public Function GetKeyNames(ByVal monFichier As String, ByVal maSection As String) As ArrayList Dim Buffer As New ArrayList Dim Ligne As String Try Dim Fichier As StreamReader = New StreamReader(monFichier) Do Ligne = Fichier.ReadLine If Ligne = "[" & maSection & "]" Then Do Ligne = Fichier.ReadLine If LSet(Ligne, 1) <> "[" Then If Ligne.Length > 0 Then Ligne = LSet(Ligne, Ligne.IndexOf("=")) Buffer.Add(Ligne) End If End If End If Loop Until LSet(Ligne, 1) = "[" Or Ligne Is Nothing End If Loop Until Ligne Is Nothing Catch ex As Exception MessageBox.Show(ex.Message.ToString) End Try Return Buffer End Function
L'erreur est générée ici:
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 Private Sub Btn_tv1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_tv1.Click Dim objet As New IniFunctions Dim resultat1 As ArrayList Dim resultat2 As ArrayList Dim position As Integer = 0 Try resultat1 = objet.GetSectionNames(txtb_TP4_Path.Text) For Each valeur1 As String In resultat1 TV_Ini.Nodes.Add(valeur1) valeur1 = valeur1.Substring(1, valeur1.IndexOf("]") - 1) resultat2 = objet.GetKeyNames(txtb_TP4_Path.Text, valeur1) For Each valeur2 As String In resultat2 TV_Ini.Nodes(position).Nodes.Add(Trim(valeur2)) Next position = position + 1 Next Catch ex As Exception 'MessageBox.Show(ex.Message.ToString) End Try End Sub
En gros, resultat2 est un arraylist contenant les keys se trouvant en dessous d'une section particuliére (si vous comprenez pas, ouvrez un fichier ini et vous verrez ceci: [SECTION] et key=value).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 resultat2 = objet.GetKeyNames(txtb_TP4_Path.Text, valeur1)
Apparement le popup est généré lors du dernier passage de la boucle, mais je ne comprend vraiment pas pourquoi, vu que les boucles précédente se passent correctement.
Ce message d'erreur me suis car pour une autre application, je l'ai aussi.
Partager