VB.NET: Popup Object reference not set as instance of an object.
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:
Code:
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 |
2. Extrait de ma classe principale
Code:
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 |
L'erreur est générée ici:
Code:
1 2
|
resultat2 = objet.GetKeyNames(txtb_TP4_Path.Text, valeur1) |
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).
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.