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 :

exception de première chance de type 'System.NullReferenceException' [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Par défaut exception de première chance de type 'System.NullReferenceException'
    Salut la communauté je suis confronté a une erreur qui survient durant l’exécution de mon application a un niveau bien spécifique.
    Quand je lance j'ai cette erreur dans la fenêtre d’exécution " Une exception de première chance de type 'System.NullReferenceException' " + ce message " La référence d'objet n'est pas définie à une instance d'un objet." et comme conseil de dépannage j'ai " Utilisez le mot clé "New" pour créer une instance d'objet. "
    Voici le code du module dans lequel il est écrit
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
     
    Imports System.IO
    Module Traiter_Log
        Public Sub TraiterLog(ByVal log As String, ByRef nlignes() As String, ByRef logtraiter() As Principal.LogTabSMS)
     
            nlignes = log.Split(vbCrLf) 'Decoupe le texte principal par ligne
            Dim i, j As Integer
            Dim tampon(0) As String
            Dim Taille As Integer
            Dim tabTri() As String = log.Split(vbCrLf) 'Affectation du contenu du 1er Tableau pour preserver son contenu
     
            'Determine la valeur de la ligne la plus longue
            Taille = 0
            For i = 0 To UBound(tabTri)
                If Taille < tabTri(i).Length Then
                    Taille = tabTri(i).Length
                End If
            Next i
     
            'Decoupe chaque ligne par mots
            Dim tabSemifini(UBound(nlignes), Taille) As String
            Dim LigneTempo As String = "" 'Tableau temporaire reçoit la ligne decoupé en chaînes
            For i = 0 To UBound(nlignes)
                LigneTempo = nlignes(i)
                Dim Tabtempo() As String = LigneTempo.Split(" ")
                For j = 0 To UBound(Tabtempo)
                    tabSemifini(i, j) = Tabtempo(j)
                Next j
            Next i
     
            'Declaration des differents tableaux de categories
            Dim strDate(UBound(nlignes)) As String
            Dim strHeure(UBound(nlignes)) As String
            Dim strEtat(UBound(nlignes)) As String
            Dim strExpediteur(UBound(nlignes)) As String
            Dim strDestinataire(UBound(nlignes)) As String
            Dim strSMSC(UBound(nlignes)) As String
            Dim strSVC(UBound(nlignes)) As String
            Dim strACT(UBound(nlignes)) As String
            Dim strFID(UBound(nlignes)) As String
            Dim strBINF(UBound(nlignes)) As String
            Dim strFlags(UBound(nlignes)) As String
            Dim strUDH(UBound(nlignes)) As String
            Dim strMsg(UBound(nlignes)) As String
            Dim strTaille(UBound(nlignes)) As String
            Dim strDLR(UBound(nlignes)) As String
     
     
            'Classification et mise en forme des données traités dans les differents tableaux déclarés
            Dim Elt1 As Char() = {"[", "]"}
            Dim tampont As String
            For i = 0 To UBound(tabSemifini, 1)
                For j = 0 To UBound(tabSemifini, 2)
                    Dim eltact As Char() = {"[", "]", "A", "C", "T", ":", "a", "c", "t"}
                    Dim eltflags As Char() = {"[", "f", "l", "a", "g", "s", ":", "]", "F", "L", "A", "G", "S"}
                    Dim eldest As Char() = {"[", "t", "o", ":", "]", "T", "O"}
                    Dim eltail As Char() = {"[", ":", ":"}
                    Dim eltbinf As Char() = {"[", "B", "I", "N", "F", ":", "]"}
                    Dim y As Integer
                    If tabSemifini(i, j) <> "" Then
                        Select Case j
                            Case 0
                                strDate(i) = (tabSemifini(i, j))
                            Case 1
                                strHeure(i) = (tabSemifini(i, j))
                            Case 2
                                If tabSemifini(i, j) = "SENT" Then
                                    strEtat(i) = tabSemifini(i, j)
                                Else
                                    strEtat(i) = tabSemifini(i, j + 1)
                                End If
                            Case 4
                                tampont = tabSemifini(i, j)
                                tampont = tampont.Trim(Elt1)
                                tampont = tampont.Remove(0, 5)
                                strSMSC(i) = tampont
                            Case 5
                                tampont = tabSemifini(i, j)
                                tampont = tampont.Trim(Elt1)
                                tampont = tampont.Remove(0, 4)
                                strSVC(i) = tampont
                            Case 6
                                If tabSemifini(i, j) <> "[ACT:]" Then
                                    strACT(i) = tabSemifini(i, j).Trim(eltact)
                                Else
                                    strACT(i) = " "
                                End If
                            Case 7
                                If tabSemifini(i, j) <> "[BINF:]" Then
                                    strBINF(i) = tabSemifini(i, j).Trim(eltbinf)
                                Else
                                    strBINF(i) = " "
                                End If
                            Case 8
                                tampont = tabSemifini(i, j)
                                tampont = tampont.Trim(Elt1)
                                tampont = tampont.Remove(0, 4)
                                strFID(i) = tampont
                            Case 9
                                tampont = tabSemifini(i, j)
                                tampont = tampont.Trim(Elt1)
                                tampont = tampont.Remove(0, 5)
                                strExpediteur(i) = tampont
                            Case 10
                                tampont = tabSemifini(i, j)
                                tampont = tampont.Trim(Elt1)
                                tampont = tampont.Remove(0, 3)
                                strDestinataire(i) = tampont
                            Case 11
                                tampont = tabSemifini(i, j)
                                tampont = tampont.Trim(Elt1)
                                tampont = tampont.Remove(0, 6)
                                strFlags(i) = tampont
                                Dim valFlags() As String = strFlags(i).Split(":")
                                If valFlags(4) = "1" Then
                                    strDLR(i) = "DELIVERED"
                                ElseIf valFlags(4) = "2" Then
                                    strDLR(i) = "FAILED"
                                ElseIf valFlags(4) = "4" Then
                                    strDLR(i) = "QUEUED"
                                ElseIf valFlags(4) = "8" Then
                                    strDLR(i) = "ACCEPTED"
                                ElseIf valFlags(4) = "16" Then
                                    strDLR(i) = "REJECTED"
                                Else
                                    strDLR(i) = ""
                                End If
     
                            Case 12
                                If tabSemifini(i, j) = "[msg:4:ACK/]" Then
                                    strTaille(i) = "4"
                                    strMsg(i) = "ACK"
                                Else
                                    tampont = tabSemifini(i, j)
                                    tampont = tampont.Trim(eltail)
                                    tampont = tampont.Remove(0, 4)
                                    Dim TailleTemp() As String = tampont.Split(":")
                                    Dim k As Short
                                    Dim Temp As String = ""
                                    For k = 0 To UBound(TailleTemp)
                                        If k = 0 Then
                                            strTaille(i) = CInt(TailleTemp(k))
                                        Else
                                            Temp = Temp & " " & TailleTemp(k)
                                        End If
                                    Next k
                                    tabSemifini(i, j + 1) = Temp & " " & tabSemifini(i, j + 1)
                                    For y = j + 1 To UBound(tabSemifini, 2)
                                        If tabSemifini(i, y) <> "[udh:0:]" And tabSemifini(i, y) <> "" Then
                                            strMsg(i) = strMsg(i) & " " & tabSemifini(i, y).Trim(Elt1)
                                        Else
     
                                            Dim Elt2 As Char() = {":", "u", "d", "h", "[", "]", "U", "D", "H"}
                                            strUDH(i) = tabSemifini(i, y).Trim(Elt2)
                                            Exit For
                                        End If
                                    Next y
                                End If
                        End Select
                    Else : Exit For
                    End If
                Next j
            Next i
     
            'Exportation des données des differents tableaux du module vers le tableau logtraiter de type LogTABSMS déclaré dans le form principal
            'Pour une utilisation ultérieure
            For i = 0 To UBound(nlignes)
                With logtraiter(i)
                    .LogACT = strACT(i)  'L erreur survient à cette étape
                    .LogBINF = strBINF(i)
                    .LogDate = strDate(i)
                    .LogDestinataire = strDestinataire(i)
                    .LogDLR = strDLR(i)
                    .LogEtat = strEtat(i)
                    .LogExpediteur = strExpediteur(i)
                    .LogFID = strFID(i)
                    .LogFlags = strFlags(i)
                    .LogMSG = strMsg(i)
                    .LogSMSC = strSMSC(i)
                    .logSVC = strSVC(i)
                    .LogTaille = strTaille(i)
                    .LogUDH = strUDH(i)
     
                End With
            Next i
        End Sub
     
    End Module
    Merci pour l'aide que vous m'apporterez

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    C'est possible d'avoir la n° de ligne, l'instruction, qui génère cette exception ?

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Par défaut
    Citation Envoyé par sinople Voir le message
    C'est possible d'avoir la n° de ligne, l'instruction, qui génère cette exception ?
    La ligne 169 à la ligne 182 je l'ai mise en commentaire dans le code
    un bref apercu de ces lignes 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
      'Exportation des données des differents tableaux du module vers le tableau logtraiter de type LogTABSMS déclaré dans le form principal
            'Pour une utilisation ultérieure
            For i = 0 To UBound(nlignes)
                With logtraiter(i)
                    .LogACT = strACT(i)  'L erreur survient à cette étape
                    .LogBINF = strBINF(i)
                    .LogDate = strDate(i)
                    .LogDestinataire = strDestinataire(i)
                    .LogDLR = strDLR(i)
                    .LogEtat = strEtat(i)
                    .LogExpediteur = strExpediteur(i)
                    .LogFID = strFID(i)
                    .LogFlags = strFlags(i)
                    .LogMSG = strMsg(i)
                    .LogSMSC = strSMSC(i)
                    .logSVC = strSVC(i)
                    .LogTaille = strTaille(i)
                    .LogUDH = strUDH(i)
     
                End With
            Next i

  4. #4
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Salut

    Sers toi du debogger F8 (outil indispensable)
    et après continue pas à pas et dis à quelle ligne l'exception est relevée

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Par défaut
    Citation Envoyé par shayw Voir le message
    Salut

    Sers toi du debogger F8 (outil indispensable)
    et après continue pas à pas et dis à quelle ligne l'exception est relevée
    Déjà fait le débogage détaille et c'est pour cela que j'ai poster sur le forum. Lire le post précédent tu verras la ligne en question

  6. #6
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    UBound(tabTri)

    ce n'est pas du vb.net
    d'abord
    met ton projet à option strict on et retire la réference visualbasic

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Par défaut
    Citation Envoyé par shayw Voir le message
    UBound(tabTri)

    ce n'est pas du vb.net
    d'abord
    met ton projet à option strict on et retire la réference visualbasic
    Pourquoi ce n'est pas du VB?NET?
    En plus l'activation de l'option strict me génère un tas d'erreurs de plus

  8. #8
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    Pour une raison qui m'échappe (les itérations à x dimension foireuses dans des tables à 18h00 ça passe plus désolé...) tu ne remplis pas toutes les cases de ton tableau strACT(i), et probablement pas les autres non plus vu que c'est le premier d'une longue lignée...

    Si une case du tableau devant contenir une string est vide lors de sa lecture. Tu obtiens une NullReferenceException et non pas une chaîne vide ("").

    Il y a donc 2 possibilités:

    Soit c'est normal qu'il y ait des cases vides dans ton tableau, il faut alors faire un test de type (If variable IsNot Nothing) avant d'accéder à ta variable.

    Soit ton tableau est sur-dimensionnée (trop grand) ou mal rempli dans le pavé suppérieur.

    Dans tout les cas je ne peux que te conseiller de laisser tomber l'utilisation de tableau et d'utiliser des collections à la place.

  9. #9
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Par défaut
    Citation Envoyé par sinople Voir le message
    Pour une raison qui m'échappe (les itérations à x dimension foireuses dans des tables à 18h00 ça passe plus désolé...) tu ne remplis pas toutes les cases de ton tableau strACT(i), et probablement pas les autres non plus vu que c'est le premier d'une longue lignée...

    Si une case du tableau devant contenir une string est vide lors de sa lecture. Tu obtiens une NullReferenceException et non pas une chaîne vide ("").

    Il y a donc 2 possibilités:

    Soit c'est normal qu'il y ait des cases vides dans ton tableau, il faut alors faire un test de type (If variable IsNot Nothing) avant d'accéder à ta variable.

    Soit ton tableau est sur-dimensionnée (trop grand) ou mal rempli dans le pavé suppérieur.

    Dans tout les cas je ne peux que te conseiller de laisser tomber l'utilisation de tableau et d'utiliser des collections à la place.
    Ok j'essaie ton conseil, mais il faut que je te precise que lorsque je l'exécute en dehors du module je n'ai pas cette erreur, mais comme je dois l'utilisier das une autre procedure je suis bien obligé de la fais ainsi, mais il faut que je teste ta solution. Merci pour le coup de pouce

  10. #10
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 45
    Par défaut
    Elle n'est pas vide, ben j'opte pour une autre methode

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/05/2013, 11h46
  2. Réponses: 1
    Dernier message: 02/05/2013, 09h37
  3. [Débutant] Exception de première chance de type 'System.IndexOutOfRangeException'
    Par Martipit dans le forum VB.NET
    Réponses: 5
    Dernier message: 30/04/2013, 15h53
  4. Exception de première chance
    Par Oh-Dae-Su dans le forum C++
    Réponses: 6
    Dernier message: 15/05/2008, 14h17
  5. Exception de première chance
    Par oodini dans le forum C++
    Réponses: 10
    Dernier message: 25/09/2007, 16h09

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