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

VB.NET Discussion :

Erreur: La référence d'un objet n'est pas définie à une instance d'un objet


Sujet :

VB.NET

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 68
    Points : 40
    Points
    40
    Par défaut Erreur: La référence d'un objet n'est pas définie à une instance d'un objet
    Bonjour...

    Voilà j'ai mon fichier texte avec une en-tête de 4 lignes, puis des valeurs séparées par une étoile ("*"). J'aimerai que dans ma datagridview, il n'y ai que la première valeur de chaque ligne...

    On m'a gentillement aidé dans un autre topic en me disant comment ne prendre que la première partie (celle avant le 1er "*").

    Mais voilà le message suivant s'affiche :

    La référence d'un objet n'est pas définie à une instance d'un objet
    Et après plusieurs tests (modifications, msgbox de contrôle des variables,...) je me rend compte que c'est lorsque que je passe à la 2éme ligne de ma DatagridView que mon programme plante... En gros la ligne 0 c'est nickel, et la ligne 1 ça plante...


    Pour moi cette erreur est totalement insensée...

    Voici mon code :

    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
     
    Dim result As String()
     
     
            Try
                Dim monStreamReader As New StreamReader(Chemin) 'Stream pour la lecture
                Dim ligne As String ' Variable contenant le texte de la ligne
     
                Do
                    ligne = monStreamReader.ReadLine()
                    If i >= 3 Then
                        For l = 0 To 5
                            For c = 0 To 4
     
                                ligne = monStreamReader.ReadLine
                                result = ligne.Split("*")
                                ligne = result(0)
                                MyDataGridView.Item(c, l).Value = ligne
     
                            Next
                        Next
                    End If
                    i = i + 1
                Loop Until ligne Is Nothing
     
                monStreamReader.Close()
     
            Catch ex As Exception
                MsgBox(ex.Message.ToString())
            End Try

    Merci d'avance, car là ça me prend vraiment la tête
    .Codialement

  2. #2
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Si tu mets un point d'arrêt a l'entrer de ta fonction et qu'après tu avances pas a pas avec F10...

    Tu verras très clairement a quel ligne ton code plante.

    Comme tu manipules trois objets: Ton datagridview, ton streamreader et ton tableau de string.... C'est l'un des trois qui a un problème.

    Pour résoudre ton problème, fais comme j'ai dis plus haut et on verra.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  3. #3
    Candidat au Club
    Inscrit en
    Février 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Combien de lignes dis tu avoir ?

    Avec tes 2 boucles (For ... Next) tu lis plus de 30 lignes...

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 68
    Points : 40
    Points
    40
    Par défaut
    En fait il fait tout et dès qu'il sort des For, il plante et m'affiche ce message d'erreur...

    Rien ne m'énerve plus qu'une erreur introuvable!

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 68
    Points : 40
    Points
    40
    Par défaut
    résolu, merci beaucoup à Strauby, sa phrase m'a fait "tilt"!

    En fait avant ça fonctionnait car une fois que les ligne de mon stramreader ne valais rien, le programme ne s'en préoccupait pas! Mais une fois la fonction .split dans le code, le split plantait!


    Merci encore pour cette phrase qui m'a ouvert les yeux

  6. #6
    Membre habitué Avatar de M.Max
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 90
    Points : 127
    Points
    127
    Par défaut
    En fait je suis confronté au même problème, ma fonction split plante et me renvoie la même erreur.
    Peut-être pourrais-tu poster la réponse !?!

    Merci.

  7. #7
    Membre habitué Avatar de M.Max
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 90
    Points : 127
    Points
    127
    Par défaut
    OK trouvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If ligne IsNot Nothing Then
        inputs = ligne.Split(New Char() {";"c})
    End If
    La première ligne vide fait sortir du do..loop mais fait planter le split au passage. Un petit test et c'est fixé !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/11/2011, 18h26
  2. Réponses: 5
    Dernier message: 25/10/2011, 10h31
  3. Réponses: 7
    Dernier message: 31/12/2009, 09h10
  4. Réponses: 0
    Dernier message: 29/12/2009, 09h51
  5. Réponses: 8
    Dernier message: 04/06/2007, 16h20

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