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 :

Error System.NullReferenceException*: 'La référence d'objet n'est pas définie à une instance d'un objet.' [Débutant]


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Error System.NullReferenceException*: 'La référence d'objet n'est pas définie à une instance d'un objet.'
    Bonjour,
    Bien que j'ait cherché et lu les articles concernant cette erreur, j'arrive pas à le résoudre. 1er temps, quand j'ajoute pas les nouveaux codes, cela compile sans erreur. Après mon insertion, il apparaît l'erreur Error System.NullReferenceException*: 'La référence d'objet n'est pas définie à une instance d'un objet.' mat a été Nothing
    Je voudrais coder un jeu de mémoire. Une matrice de chiffres 1-9 va apparaître dans 10 secondes puis l'utilisateur a 20 secondes pour remplir ce qu'il a vu et on va voir qu'il a eu combien de bonnes réponses.

    Merci d'avance de votre aide

    Voici mon code:

    Code VB.NET : 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
     
    Public Class Form1
        Dim list_init As List(Of Integer) = New List(Of Integer)
        Dim list_fill As List(Of Integer) = New List(Of Integer)
     
        Dim Matrix As Integer() = New Integer(8) {1, 2, 3, 4, 5, 6, 7, 8, 9}
        Dim hasard As New Random()
     
        Dim mat As Label
        Dim fill As TextBox
     
        Dim encore As Boolean
     
        Dim nombre_aleatoire As Integer
        Dim List_int As List(Of Integer) = New List(Of Integer)
     
        Public Sub InitMatrix()
            For i As Integer = 0 To 8
                List_int.Add(Matrix(i))
            Next
        End Sub
     
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            MsgBox("Vous avez 10 secondes pour tout mémoriser. Bon courage")
            list_init.Clear()
            list_fill.Clear()
            encore = True
            StartGame()
        End Sub
     
        Private Sub cmd_back_Click(sender As Object, e As EventArgs) Handles cmd_back.Click
     
        End Sub
     
        Private Sub cmd_restart_Click(sender As Object, e As EventArgs) Handles cmd_restart.Click
            list_init.Clear()
            list_fill.Clear()
            encore = True
            StartGame()
        End Sub
     
        Private Sub cmd_exit_Click(sender As Object, e As EventArgs) Handles cmd_exit.Click
            Application.Exit()
        End Sub
     
        Private Sub countdown_Tick(sender As Object, e As EventArgs) Handles countdown.Tick
            countdown.Enabled = True
            countdown.Start()
            countdown.Interval = 1000
            If (lb_timeleft.Text = 0) And (encore = True) Then
                countdown.Stop()
                lb_timeleft.Text = 20
                encore = False
                pnl_mat.Visible = False
                pnl_fil.Visible = True
            ElseIf (lb_timeleft.Text = 0) And (encore = False) Then
                countdown.Stop()
                FillIn()
                Me.Close()
            Else
                lb_timeleft.Text = Val(lb_timeleft.Text) - 1
            End If
        End Sub
     
        Public Sub StartGame()
            pnl_mat.Visible = True
            pnl_fil.Visible = False
            InitMatrix()
     
            lb_timeleft.Text = 10
            For Each element In pnl_mat.Controls
                mat = TryCast(element, Label) 'convertit les labels en 1 seul label
                nombre_aleatoire = hasard.Next(List_int.Count - 1)
                mat.Text = List_int.ElementAt(nombre_aleatoire)
                list_init.Add(Val(mat.Text))
                List_int.RemoveAt(nombre_aleatoire)
            Next
            countdown.Start()
        End Sub
     
        Public Sub FillIn()
            For Each element In pnl_fil.Controls
                fill = TryCast(element, TextBox)
                list_fill.Add(Val(fill.Text))
            Next
     
            Dim correct As Integer = 0
            For i As Integer = 0 To 8
                If (list_init(i) = list_fill(i)) Then
                    correct = correct + 1
                End If
            Next
     
            MsgBox("Vous avez ", correct, "correctes réponses")
            Me.Close()
        End Sub
     
        Private Sub cmd_ok_Click(sender As Object, e As EventArgs) Handles cmd_ok.Click
            countdown.Stop()
            FillIn()
        End Sub
    End Class

  2. #2
    Membre averti Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Points : 372
    Points
    372
    Par défaut
    Bonsoir,

    Citation Envoyé par ynhinguyen Voir le message
    1er temps, quand j'ajoute pas les nouveaux codes, cela compile sans erreur. Après mon insertion, il apparaît l'erreur Error System.NullReferenceException*:
    C'est quoi le code que tu ajoutes, à quel endroit l'ajoutes-tu et à quel niveau apparait l'erreur ?

    Le code que tu nous montres, c'est celui qui fonctionne ou celui qui ne fonctionne pas ?

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    Le code que je montres ici ne fonctionne pas. Cette ligne 60 a une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mat.Text = List_int.ElementAt(nombre_aleatoire)
    Erreur: Error System.NullReferenceException*: 'La référence d'objet n'est pas définie à une instance d'un objet.' mat a été Nothing
    L'ancien code contenant cette ligne mais sans erreur
    Ce code est seulement la partie 1, partie affichage la matrice des chiffres pendant 10 secondes. Quand j'ajoute la partie que l'utilisateur complète la matrice, ça fait l'erreur
    Merci de ta réponse et ton aide.

    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
    Public Class Form1
        Dim list_init As List(Of Integer) = New List(Of Integer)
     
        Dim Matrix As Integer() = New Integer(8) {1, 2, 3, 4, 5, 6, 7, 8, 9}
        Dim hasard As New Random()
     
        Dim mat As Label
        Dim fill As TextBox
     
        Dim encore As Boolean
     
        Dim nombre_aleatoire As Integer
        Dim List_int As List(Of Integer) = New List(Of Integer)
     
        Public Sub InitMatrix()
            For i As Integer = 0 To 8
                List_int.Add(Matrix(i))
            Next
        End Sub
     
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            MsgBox("Vous avez 10 secondes pour tout mémoriser. Bon courage")
            list_init.Clear()
            StartGame()
        End Sub
     
        Private Sub cmd_back_Click(sender As Object, e As EventArgs) Handles cmd_back.Click
     
        End Sub
     
        Private Sub cmd_restart_Click(sender As Object, e As EventArgs) Handles cmd_restart.Click
            list_init.Clear()
            StartGame()
        End Sub
     
        Private Sub cmd_exit_Click(sender As Object, e As EventArgs) Handles cmd_exit.Click
            Application.Exit()
        End Sub
     
        Private Sub countdown_Tick(sender As Object, e As EventArgs) Handles countdown.Tick
            countdown.Enabled = True
            countdown.Start()
            countdown.Interval = 1000
            If (lb_timeleft.Text = 0) Then
                countdown.Stop()
            Else
                lb_timeleft.Text = Val(lb_timeleft.Text) - 1
            End If
        End Sub
     
        Public Sub StartGame()
            pnl_mat.Visible = True
            pnl_fil.Visible = False
            InitMatrix()
     
            lb_timeleft.Text = 10
            For Each element In pnl_mat.Controls
                mat = TryCast(element, Label) 'convertit les labels en 1 seul label
                nombre_aleatoire = hasard.Next(List_int.Count - 1)
                mat.Text = List_int.ElementAt(nombre_aleatoire)
                list_init.Add(Val(mat.Text))
                List_int.RemoveAt(nombre_aleatoire)
            Next
            countdown.Start()
        End Sub
    End Classe

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Traité
    Bonsoir,
    Le problème se trouve dans le design de Form, ce n'est pas le code qui a erreur. Merci quand même de ton aide.
    Je vais fermer cette discussion

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/09/2019, 15h04
  2. Réponses: 3
    Dernier message: 31/10/2017, 21h24
  3. Réponses: 2
    Dernier message: 13/02/2011, 13h36
  4. Réponses: 0
    Dernier message: 23/03/2009, 13h40
  5. Réponses: 2
    Dernier message: 05/06/2007, 17h22

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