Partage
  • Partager sur Facebook
  • Partager sur Twitter

La référence d'objet n'est pas définie à une...

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

    28 février 2019 à 16:34:00

    Bonjour a vous tous, je voudrais un peu d'aide.

    Je voudrais que vous m'aidez a résoudre cette erreur que j'ai rencontré tout a l'heure. Je suis débutant en Vb.Net et j'arrive pas a y remedié merci d'avance.

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

    Sub BtnSaveCond_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSaveCond.Click
    
            'Dim monCond As New Conducteur(Me.TextBox1.Text, Me.TextBox2.Text, Me.TextBox3.Text, Me.TextBox4.Text, Me.TextBox5.Text, Me.DateTimePicker1.Value.ToShortDateString, IsNumeric(Me.TextBox7.Text), Me.NumericUpDown1.Value, IsNumeric(Me.TextBox9.Text))
    
            Dim monCond As New Conducteur("Alou", "Seck", "Cite Gabon", "saliou@gmail.com", "Rufisk", Date.FromOADate(10 / 10 / 2019), 234, 7, 774728716)
    
                SuiviConducteur.ListConducteurs.Add(monCond)
    
            MsgBox("Fiche Conducteur correctement crée", vbOKOnly, "Confirmation")
    
            Me.Close()
    
        End Sub



    -
    Edité par AlassaneSeck1 28 février 2019 à 16:38:40

    • Partager sur Facebook
    • Partager sur Twitter
      28 février 2019 à 17:57:28

      Kesskessé ça :

      SuiviConducteur
      
      ListConducteurs


      Envoi nous l'erreur complète stoplé !

      • Partager sur Facebook
      • Partager sur Twitter
        28 février 2019 à 18:01:05

        SuiviConducteur == Nothing ?

        SuiviConducteur.ListConducteurs == Nothing ?

        etc...

        Le débogueur est ton ami.

        • Partager sur Facebook
        • Partager sur Twitter
        Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
          4 mars 2019 à 13:04:10

          Oki je vais détailler mon code comme ça vous allez comprendre ma question.

          Public Class Conducteur
              Private nomC As String
              Public Property Nom As String
                  Get
                      Return nomC
                  End Get
                  Set(ByVal value As String)
                      nomC = value
                  End Set
              End Property
              Private prenomC As String
              Public Property Prenom As String
                  Get
                      Return prenomC
                  End Get
                  Set(ByVal value As String)
                      prenomC = value
                  End Set
              End Property
              Private emailC As String
              Public Property Email As String
                  Get
                      Return emailC
                  End Get
                  Set(ByVal value As String)
                      emailC = value
                  End Set
              End Property
              Private adresseC As String
              Public Property Adresse As String
                  Get
                      Return adresseC
                  End Get
                  Set(ByVal value As String)
                      adresseC = value
                  End Set
              End Property
              Private matriculeC As Integer
              Public Property Matricule As Integer
                  Get
                      Return matriculeC
                  End Get
                  Set(ByVal value As Integer)
                      matriculeC = value
                  End Set
              End Property
              Private lieuNaissC As String
              Public Property LieuNaiss As String
                  Get
                      Return lieuNaissC
                  End Get
                  Set(ByVal value As String)
                      lieuNaissC = value
                  End Set
              End Property
              Private dateNaissC As Date
              Public Property DateNaiss As Date
                  Get
                      Return dateNaissC
                  End Get
                  Set(ByVal value As Date)
                      dateNaissC = value
                  End Set
              End Property
              Private telC As Integer
              Public Property Tel As Integer
                  Get
                      Return telC
                  End Get
                  Set(ByVal value As Integer)
                      telC = value
                  End Set
              End Property
              Private categorieC As Integer
              Public Property Categorie As Integer
                  Get
                      Return categorieC
                  End Get
                  Set(ByVal value As Integer)
                      categorieC = value
                  End Set
              End Property
              Public Sub New()
          
              End Sub
              Sub New(ByVal _nom As String, ByVal _prenom As String, ByVal _adresse As String,
                      ByVal _email As String, ByVal _lieuNaiss As String, ByVal _dateNaiss As Date,
                      ByVal _matricule As Integer, ByVal _categorie As Integer, ByVal _tel As Integer)
                  _nom = Nom
                  _prenom = Prenom
                  _adresse = Adresse
                  _email = Email
                  _lieuNaiss = LieuNaiss
                  _dateNaiss = DateNaiss
                  _matricule = Matricule
                  _categorie = Categorie
                  _tel = Tel
              End Sub
          
              Sub Update(ByVal _nom As String, ByVal _prenom As String, ByVal _adresse As String,
                      ByVal _email As String, ByVal _lieuNaiss As String, ByVal _dateNaiss As Date,
                      ByVal _matricule As Integer, ByVal _categorie As Integer, ByVal _tel As Integer)
                  _nom = Nom
                  _prenom = Prenom
                  _adresse = Adresse
                  _email = Email
                  _lieuNaiss = LieuNaiss
                  _dateNaiss = DateNaiss
                  _matricule = Matricule
                  _categorie = Categorie
                  _tel = Tel
              End Sub
          
              Public Overrides Function ToString() As String
                  Return Nom
              End Function
          
          End Class

          Voici ci-dessus la classe conducteur avec son contructeur, une classe update et ses getteurs setteurs..

          Imports System.IO
          Imports System.Xml.Serialization
          Public Class SuiviConducteur
              Private ListConducteur As List(Of Conducteur)
              Public Property ListConducteurs As List(Of Conducteur)
                  Get
                      Return ListConducteur
                  End Get
                  Set(ByVal value As List(Of Conducteur))
                      ListConducteur = value
                  End Set
              End Property
              Private Sub ListeConducteurs_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                  'Instancie une nouvelle liste
                  ListConducteurs = New List(Of Conducteur)
                  'Récupère les infos
                  Deserialisation()
                  'MAJ la liste de films
                  UpdateListe()
              End Sub
              Public Sub UpdateListe()
                  Me.ListeConducteur.Items.Clear()
                  'Parcourt les films de la bibliothèque
                  For Each Conduct As Conducteur In ListConducteur
                      'Remplit la liste en se basant sur le nom (vu que j'ai surchargé ToString)
                      'A le même effet que FilmALister.Nom sans la surcharge.
                      Me.ListeConducteur.Items.Add(Conduct.Matricule)
                  Next
              End Sub
              Private Sub Deserialisation()
                  If File.Exists("Conducteur.txt") Then
                      'On ouvre le fichier et récupère son flux
                      Dim FluxDeFichier As Stream = File.OpenRead("Conducteur.txt")
                      Dim Deserialiseur As New XmlSerializer(GetType(List(Of Conducteur)))
                      'Désérialisation et conversion de ce qu'on récupère dans le type « Film »
                      ListConducteur = Deserialiseur.Deserialize(FluxDeFichier)
                      'Fermeture du flux
                      FluxDeFichier.Close()
                  End If
              End Sub
              Public Sub Serialisation()
                  'On crée le fichier et récupère son flux
                  Dim FluxDeFichier As FileStream = File.Create("Conducteur.txt")
                  Dim Serialiseur As New XmlSerializer(GetType(List(Of Conducteur)))
                  'Sérialisation et écriture
                  Serialiseur.Serialize(FluxDeFichier, ListConducteur)
                  'Fermeture du fichier
                  FluxDeFichier.Close()
              End Sub
          End Class

          ça c'est la classe SuiviConducteur ou je crée la fonction serialisation et déserialisation pour sauvegarder mes donnés dans le fichier Conducteur.txt

          Public Class FicheConducteur
              Private Sub BtnSaveCond_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSaveCond.Click
                  Dim monCond = New Conducteur("Alou", "Seck", "Cite Gabon", "saliou@gmail.com", "Rufisk", Date.FromOADate(10 / 10 / 2019), 234, 7, 774728716)
                  SuiviConducteur.ListConducteurs.Add(monCond)
                  MsgBox("Fiche Conducteur correctement crée", vbOKOnly, "Confirmation")
                  Me.Close()
              End Sub
              Private Sub FicheConducteur_FormClosing(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.FormClosing
                  'Sérialise les films lors de la fermeture
                  SuiviConducteur.Serialisation()
              End Sub
          End Class

          Voici la classe Fiche conducteur ou j'initialise mon Objet Conducteur avec ces données puis je l'ajoute dans le fichier avec la serialisation.

          Et enfin voici la fenétre principale 

          Public Class Form1
              Private ListConducteur As New List(Of Conducteur)
              Property ListConducteurs As List(Of Conducteur)
                  Get
                      Return ListConducteur
                  End Get
                  Set(ByVal value As List(Of Conducteur))
                      ListConducteur = value
                  End Set
              End Property
          
              Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
                  FicheConducteur.Show()
              End Sub
          End Class



          Voila a quoi ressemble mon code et jesper que vous allez me trouvez une solution!!



          -
          Edité par AlassaneSeck1 4 mars 2019 à 13:20:42

          • Partager sur Facebook
          • Partager sur Twitter
            4 mars 2019 à 19:12:32

            Et tout ce code sans aucune vérification intermédiaire que tout ce qui était déjà fait fonctionne correctement ???

            On c'est même pas si le sérialiser/désérialiseur que vous utilisez gère correctement les champs privés, etc...

            Commencez par valider les briques de bases avant de faire une usine à gaz.

            LE DÉBOGUEUR EST NOTRE AMI.

            Votre code est très difficile à lire car vous n'utilisez pas de convention pour distinguer les classes des instances.

            A la ligne 4 de votre 3ème bout de code, ce "SuiviConducteur", c'est quoi ??? Une classe avec une propriété "ListConducteur" static ? Sinon, c'est un membre de la classe "FicheConducteur" ?

            Pensez à utiliser des propriétés automatiques, cela réduirait les 2 à 82 de votre 1er code à 9 lignes extrêmement plus lisible que ce capharnaüm.

            La méthode "Update" qui sert à rien dans le 1er code, sauf à se planter quand elle servira enfin à quelque-chose.

            "_nom" et "nomC", c'est des champs différents, c'est quoi ce Bronx.

            Typez correctement vos paramètres du constructeur, Un numéro de téléphone, ça n'a jamais été un nombre.

            >classe update

            Confondez pas Classe et Méthode, SVP.

            Pour votre crashe initial, c'est quoi ce "SuiviConducteur" qui est utilisé comme une instance ?

            Il est initialisé où, ce machin ?

            • Partager sur Facebook
            • Partager sur Twitter
            Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

            La référence d'objet n'est pas définie à une...

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown