IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

VB.NET: Popup Object reference not set as instance of an object.


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 97
    Points : 104
    Points
    104
    Par défaut 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 : 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
    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
     
        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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    A priori, ton fichier se termine par une section sans clés...
    Il te manque un test pour ce cas.

  3. #3
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 97
    Points : 104
    Points
    104
    Par défaut
    Tout à fait, je m'en suis rendu compte hier soir, j'ai du rajouter un if ligne not is nothing then et le tour était joué.
    Merci pour ta réponse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Object reference not set to an instance of an object
    Par DjRusty dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/03/2007, 07h26
  2. Réponses: 4
    Dernier message: 14/02/2007, 18h48
  3. Réponses: 1
    Dernier message: 28/12/2006, 11h05
  4. Réponses: 1
    Dernier message: 20/04/2006, 12h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo