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 :

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


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Par défaut La référence d'objet n'est pas définie à une instance d'un objet.
    Bonjour,
    Prière m'aider à le résoudre .
    Je chercher à extraire du fichier passé en paramètre fichier une chaine de caractère commençant par type_message et se tremine par = et mettre le ésultat dans un fichier fichier_out
    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
        Sub lecture_Fichier_test(ByVal fichier As String, type_message As String, fichier_out As String)
     
            Try
     
                Dim MET As Integer = 0
                Dim metar As String = ""
               ' Création d'une instance de StreamReader pour permettre la lecture de notre fichier
                Dim monStreamReader As StreamReader = New StreamReader(fichier)
                Dim monStreamWriter As StreamWriter = New StreamWriter(fichier_out)
                Dim ligne As String
     
                'Lecture de toutes les lignes et affichage de chacune sur la page
                Do
                    ligne = monStreamReader.ReadLine()
                    MsgBox(ligne)
                    If ligne.Contains(type_message) And ligne.Contains("=") Then
                        metar = String.Concat(metar + ligne)
                        MsgBox(metar)
                        'Console.WriteLine(metar)
                        monStreamWriter.WriteLine(metar)
                        metar = ""
                        MET = 0
                        GoTo out
                    End If
                    If MET = 1 And Not ligne.Contains("=") Then metar = String.Concat(metar + ligne)
                    If ligne.Contains(type_message) Then
                        MET = 1
                        metar = ligne
                    End If
     
     
     
                    If ligne.Contains("=") And metar <> "" And MET = 1 Then
                        metar = String.Concat(metar + ligne)
                        MsgBox(metar)
                        'Console.WriteLine(metar)
                        monStreamWriter.WriteLine(metar)
                        metar = ""
                        MET = 0
                    End If
    out:
                Loop Until ligne Is Nothing
     
                'Fermeture du StreamReader (attention très important)
                monStreamReader.Close()
                monStreamWriter.Close()
            Catch ex As Exception
     
                'Code exécuté en cas d'exception
     
                MsgBox("Une erreur est survenue au cours de la lecture !")
                MsgBox(ex.Message)
     
            End Try
     
        End Sub
    de plus vous trouvez un exemple de fichier pilot sur lequel nous allons effectué cette opération.
    SATS48 DXXX 131830 MESS DXXX 131830
    08007 NO=
    SATS48 DXXX 132100
    MESS DXXX 132100Z 14003 1019 NO=
    SITS48 DXXX 132100 AAXX 13214
    32960 01403 10230 20163 30181 40191 52010=
    SATS48 DXXX 132130 MESS DXXX 132130 13003 1019 HEL=
    Cette erreur toujours s'affiche La référence d'objet n'est pas définie à une instance d'un objet et le fichier fichier_out est toujours vide
    En espérant être assez clair, merci d'avance pour l'aide

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Il faut exécuter le programme en pas à pas pour savoir à quelle ligne survient l'erreur.
    Comme tout se fait dans un Try, le message que tu affiches ne dit pas d'où vient l'erreur.
    Que ton fichier cible soit toujours vide est normal dès lors qu'il y a une erreur : le Close programmé dans le Try n'est pas exécuté et les enregistrements éventuels restent dans le buffer, ils ne vont pas sur le disque dur.

    ...

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    StreamReader.ReadLine Méthode (System.IO) | Microsoft Docs


    Retours
    String
    Ligne suivante du flux d'entrée, ou null si la fin du flux d'entrée est atteinte.

    donc en fin de fichier quand tu fais ligne.conains ca equivaut à nothing.contains donc ca plante
    tu testes nothing seulement en fin de boucle ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Réponses: 20
    Dernier message: 13/08/2007, 16h11
  2. Réponses: 2
    Dernier message: 05/06/2007, 17h22
  3. Réponses: 8
    Dernier message: 04/06/2007, 16h20
  4. Réponses: 24
    Dernier message: 01/06/2007, 09h26
  5. Réponses: 8
    Dernier message: 11/07/2006, 17h27

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