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

C# Discussion :

Erreur lecture de fichier


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 35
    Points : 22
    Points
    22
    Par défaut Erreur lecture de fichier
    Bonjour a tous,

    j'essaie de lire un fichier ligne par ligne avec un séparateur tabulation,
    mais j'ai toujours une erreur du type :

    La référence d'objet n'est pas définie à une instance d'un objet
    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
     
                System.IO.StreamReader objfichier = new System.IO.StreamReader(@"C:\info.txt");
                string[] Cop ;
                string strresult = "init tete  ";
                Cop = strresult.Split(' ');
     
     
                for (int i = 1; i > 0; i++)
                {
                    while (strresult != null)
                    {
                        strresult = objfichier.ReadLine();
                        Cop = strresult.Split('\t');
                    }
     
                } 
               }
    Le problème se pose au niveau du 2eme split.

    Si vous pouviez m'aider

    Merci

    Alex

  2. #2
    Membre éclairé
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Points : 709
    Points
    709
    Par défaut Salut
    Salut
    On peut essayer de remplacer '\t' par '\\t' ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    avec //t , j'ai une erreur
    Too many characters in character litteral

  4. #4
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Normal que tu ais une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Tant que strresult non null
    while (strresult != null)
    {
        // On lit une ligne du fichier
        strresult = objfichier.ReadLine();
        // strresult peut être null à ce stade si la fin du fichier est atteinte.
        Cop = strresult.Split('\t');
    }
    Utilise plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while ((strresult = objfichier.ReadLine()) != null)
    {
        Cop = strresult.Split('\t');
    }
    Au passage, j'espère que ta boucle for n'est pas réellement codée ainsi et que c'est juste pour l'exemple. Sinon ne soit pas pressé pour espérer sortir de cette boucle

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    merci beaucoup,
    effectvement, j'ai arreter avec la boucle for, (je débute donc je fais pas mal d'anerie)

    ton code marche bien
    merci encore

    En revanche je ne comprends pas pourquoi ce code ne fonctionne pas !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
                System.IO.StreamReader objfichier = new System.IO.StreamReader(@"C:\info.txt");
     
                string strresult = "init";
     
                while (strresult != null)
                 {  strresult = objfichier.ReadLine();
                    string[] Cop = strresult.Split('\t');
                    MessageBox.Show(Cop [0]);
     
                }
                objfichier.Close();
                objfichier.Dispose();
               }
    merci d'avance

  6. #6
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Citation Envoyé par gmailex Voir le message
    En revanche je ne comprends pas pourquoi ce code ne fonctionne pas !
    Parce que comme je l'ai indiqué dans mon précédent message, dans les commentaires du code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while (strresult != null)
    {  
        strresult = objfichier.ReadLine();
        // strresult sera null si la fin du fichier a été atteinte.
        // Les instructions suivantes généreront une exception NullReferenceException
        string[] Cop = strresult.Split('\t');
        MessageBox.Show(Cop [0]);                                              
    }
    C'est pour cela que dans le code que j'ai donné, je réalise l'affectation et le test au niveau du while.

    Autre solution pour éviter l'exception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while (strresult != null)
    {  
        strresult = objfichier.ReadLine();
        if (strresult != null)
        {
            string[] Cop = strresult.Split('\t');
            MessageBox.Show(Cop [0]);                                               
        }
    }

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Merci beaucoup,

    en revanche je me suis apreçu d'une chose,

    si il reste un espace en fin de fichier la lecture continue, ce qui vraiment problématique.

    Y a t il de meilleure condition que de dire, si la variable est null ?

Discussions similaires

  1. [C#]Erreur lecture flux http et ecriture fichier
    Par f.colo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 31/01/2012, 10h40
  2. DataSet erreur lecture de fichier XML
    Par maVariable dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/05/2009, 15h47
  3. [FTP] Erreurs de lectures de fichiers
    Par JamesP dans le forum Langage
    Réponses: 3
    Dernier message: 04/01/2007, 18h06
  4. Erreur de lecture de fichier HyperFile
    Par wkd dans le forum WinDev
    Réponses: 2
    Dernier message: 19/07/2006, 12h53
  5. [Ada] Erreur de lecture de fichier
    Par Geeky dans le forum Ada
    Réponses: 4
    Dernier message: 05/06/2006, 13h53

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