Partage
  • Partager sur Facebook
  • Partager sur Twitter

la référence d'objet n'est pas définie .......

Sujet résolu
    20 mars 2018 à 16:36:17

    Bonsoir,

    Je suis à la base dans le réseau mais j'aide en même temps des amis , cependant j'ai une erreur dans mon code et je ne trouves pas la raison,

    L'erreur en questions ' la référence d'objet n'est pas définie à une instance d'un objet '

    Imports OpenPop.Pop3.Pop3Client
    Imports OpenPop.Mime
    
    
    
    Public Class Form1
        Private Sub Label2_Click(sender As Object, e As EventArgs) Handles Label2.Click
    
    
        End Sub
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
            ListView1.Items.Clear()
            Try
                Dim Client = New OpenPop.Pop3.Pop3Client
    
                Client.Connect("pop.gmail.com", "995", True)
                Client.Authenticate(TextBox1.Text, TextBox2.Text)
    
                Dim nbremails As Integer = Client.GetMessageCount
    
                For boucle = 1 To nbremails
                    Dim Message As Message = Client.GetMessage(boucle)
    
                    ListView1.Items.Add(New ListViewItem({Message.Headers.From.Address, Message.Headers.Subject, Message.Headers.DateSent, Message.FindFirstPlainTextVersion.GetBodyAsText}))
                Next
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Information, " Erreur ")
            End Try
    
    
        End Sub
    
        Private Sub ListView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView1.SelectedIndexChanged
            Dim message As String = ListView1.SelectedItems(0).SubItems(3).Text
            Dim objet As String = ListView1.SelectedItems(0).SubItems(1).Text
    
            MsgBox(message, MsgBoxStyle.Information, objet)
    
        End Sub
    End Class


    Vu que je suis novice dans ce domaine je ne sais pas du tout ou peut venir ce problème si vous avez des solutions

    Merci d'avance :)

    EDIT :

    Message.FindFirstPlainTextVersion.GetBodyAsText L'erreur est donc ici je viens de tester je ne vois pas comment l'a réglé



    -
    Edité par KévinBESSE2 20 mars 2018 à 17:32:14

    • Partager sur Facebook
    • Partager sur Twitter
      20 mars 2018 à 19:31:39

      Utilisez le débogueur pour voir quelle partie utilisée une à "Nothing" et corrigez en conséquence.

      Valeur de "Message.FindFirstPlainTextVersion" ?

      Valeur retournée par "Message.FindFirstPlainTextVersion.GetBodyAsText" ?

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        21 mars 2018 à 15:28:42


        bacelar a écrit:

        Utilisez le débogueur pour voir quelle partie utilisée une à "Nothing" et corrigez en conséquence.

        Valeur de "Message.FindFirstPlainTextVersion" ?

        Valeur retournée par "Message.FindFirstPlainTextVersion.GetBodyAsText" ? 

        Ca ?


        • Partager sur Facebook
        • Partager sur Twitter
          21 mars 2018 à 20:00:25

          Comme "Message.FindFirstPlainTextVersion" ne semble pas être un champ public de votre bidule, utilisez la fenêtre "espion" à la place de la fenêtre "Automatique".
          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            23 mars 2018 à 14:13:58

            bacelar a écrit:

            Comme "Message.FindFirstPlainTextVersion" ne semble pas être un champ public de votre bidule, utilisez la fenêtre "espion" à la place de la fenêtre "Automatique".


            Dans la fenêtre Espion il n'y a rien
            • Partager sur Facebook
            • Partager sur Twitter
              23 mars 2018 à 14:39:13

              Accessoirement la documentation c'est pas fait pour faire joli :

               If no text/plain version is found, a null reference is returned.

              • Partager sur Facebook
              • Partager sur Twitter
              Censément, quelqu'un de sensé est censé s'exprimer sensément.
                23 mars 2018 à 14:49:22

                Sehnsucht a écrit:

                Accessoirement la documentation c'est pas fait pour faire joli :

                 If no text/plain version is found, a null reference is returned.


                Oui j'ai bien vu mais ce n'est pas du tout mon domaine , du coup je dois modifier mon message ?
                • Partager sur Facebook
                • Partager sur Twitter
                  23 mars 2018 à 15:17:49

                  Ben ça aurait déjà été bien de nous le dire si t'avais vu (déjà en donnant la documentation dès le départ, on (tu) aurait gagné 3 jours).

                  Parce que ce là y'a pas d'erreur, y'a un comportement normal et documenté qui n'a pas su être géré correctement.

                  Tu as FindFirstPlainTextVersion qui peut renvoyer null/Nothing ; ben avant de l'utiliser (d'appeler GetBodyAsText dessus) faudrait tester que t'aies pas reçu null/Nothing déjà (et si c'est null/Nothing, le traiter d'une manière qui te convient : ne pas le mettre dans la ListView, mettre une valeur par défaut genre N/D etc.)

                  -
                  Edité par Sehnsucht 23 mars 2018 à 15:43:31

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Censément, quelqu'un de sensé est censé s'exprimer sensément.
                    23 mars 2018 à 15:24:34

                    Sehnsucht a écrit:

                    Ben ça aurait déjà été bien de nous le dire si t'avais vu (déjà en donnant la documentation dès le départ, on (tu) aurait gagné 3 jours).

                    Parce que ce là y'a pas d'erreur, y'a un comportement normal et documenté qui n'a pas su être géré correctement.

                    Tu as FindFirstPlainTextVersion qui peut renvoyer null/Nothing ; ben avant de l'utiliser (d'appeler GetBodyAsText dessus) faudrait tester que t'aies pas reçu null/Nothing déjà (et si c'est c'est null/Nothing, le traiter d'une manière qui te convient : ne pas le mettre dans la ListView, mettre une valeur par défaut genre N/D etc.)

                    -
                    Edité par Sehnsucht il y a 4 minutes


                    D'accord merci ! Je vais essayer de modifier ça je t'avoue c'est pas mon domaine je donnes jutse un coup de main . C'est à dire que je ne mets pas le message dans la liste view ? 🤗
                    • Partager sur Facebook
                    • Partager sur Twitter
                      23 mars 2018 à 15:42:06

                      Là c'est plus une question de bon sens qu'autre chose, la documentation te dit que "si je trouve pas de message (enfin de text/plain version) je renvoie `rien`" donc si t'as `rien` ça va être difficile de mettre le message (enfin le plain/text version) dans la listview.

                      A toi de voir maintenant comment tu gères ça pour ton utilisateur

                      • ne rien mettre
                      • mettre un truc par défaut qui signifie `rien` (un texte vide, le mot "rien" , un texte "va te faire cuire un oeuf")
                      • une autre solution que je n'ai pas citée et est pertinente dans ta situation

                      -
                      Edité par Sehnsucht 23 mars 2018 à 15:42:58

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Censément, quelqu'un de sensé est censé s'exprimer sensément.
                        23 mars 2018 à 15:47:09

                        Dim firstPlainTextVersion As MessagePart = Message.FindFirstPlainTextVersion
                        
                        
                        ListView1.Items.Add(New ListViewItem({Message.Headers.From.Address, Message.Headers.Subject, Message.Headers.DateSent, If(MessagePart = Nothing,"N/D",MessagePart.GetBodyAsText}))

                        ou, de manière plus concise :

                        ListView1.Items.Add(New ListViewItem({Message.Headers.From.Address, Message.Headers.Subject, Message.Headers.DateSent, Message.FindFirstPlainTextVersion?.GetBodyAsText}))



                        • Partager sur Facebook
                        • Partager sur Twitter
                        Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                          23 mars 2018 à 17:19:24

                          bacelar a écrit:

                          Dim firstPlainTextVersion As MessagePart = Message.FindFirstPlainTextVersion
                          
                          
                          ListView1.Items.Add(New ListViewItem({Message.Headers.From.Address, Message.Headers.Subject, Message.Headers.DateSent, If(MessagePart = Nothing,"N/D",MessagePart.GetBodyAsText}))

                          ou, de manière plus concise :

                          ListView1.Items.Add(New ListViewItem({Message.Headers.From.Address, Message.Headers.Subject, Message.Headers.DateSent, Message.FindFirstPlainTextVersion?.GetBodyAsText}))

                          J'ai adapté ! Super merci :)



                          • Partager sur Facebook
                          • Partager sur Twitter

                          la référence d'objet n'est pas définie .......

                          × 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