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 :

problème de lecture de fichier et d'extraction de données


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 22
    Points : 14
    Points
    14
    Par défaut problème de lecture de fichier et d'extraction de données
    bonsoir, j'ai réalisé un petit programme qui peut permettre la sauvegarde ou l'ouverture de données, la sauvegarde s'effectue correctement. Je dispose d'une structure "Section" qui contient 11 champs relatifs à la section. Dans le fichier de sauvegarde, chacune des sections est écrite sur une ligne, et chacun des champs est séparé par une barre verticale "|". Dans mon proogramme principal, j'ai défini une liste de sections :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Section>liste_sections = new List<Section>();
    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
            if (openFileDialog1.ShowDialog(this) == DialogResult.OK)
            {
                    string ligne = "";
                    int j = 0;
     
                    // Création d'une section temporaire
                    Section new_section = new Section();
     
     
                    // Ouverture du fichier sélectionné
                    StreamReader sr = new StreamReader(openFileDialog1.OpenFile(), Encoding.Default);
                        ligne = sr.ReadLine();
                        while (ligne != null)
                        {
                            // on sépare tous les mots
                            string[] donnees = ligne.Split('|');
     
                            // on ajoute la section grâce à la méthode AddSection
                            new_section.AddSection(donnees[0], donnees[1], donnees[2], donnees[3], donnees[4], donnees[5], donnees[6], donnees[7], donnees[8], donnees[9], donnees[10]);
     
                            // On ajoute l'élement dans la liste de sections
                            liste_sections.Add(new_section);
     
                            // affichage des infos correctement sauvegardées
                            MessageBox.Show(liste_sections.ElementAt(j).GetInfos(), "About", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            comboBox1.Items.Add(new_section.GetSection());
                            ligne = sr.ReadLine();
                            j++;
                        }
                        // affichage des infos
                        MessageBox.Show(liste_sections.ElementAt(0).GetInfos() + "\n" + liste_sections.ElementAt(1).GetInfos(), "About", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
    Par exemple, j'ai configuré 2 sections dans le fichier de sauvegarde, j'utilise 2x la boite de dialogue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageBox.Show(liste_sections.ElementAt(j).GetInfos(), "About", MessageBoxButtons.OK, MessageBoxIcon.Information);
    une fois pendant le while, et une fois à l'extérieur. Lorsque je suis dans la boucle while, les informations qui sont affichées sont correctes. a l'extérieur de la boucle while, les informations affichées sont 2x celles de la dernière ligne du fichier... quelqu'un sait-il d'ou provient mon erreur?

  2. #2
    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
    A mon avis c'est lié à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    liste_sections.Add(new_section);
    sachant que new_section est instancié hors de la boucle tu ajoutes le même objet à ta liste continuellement d'une part.

    Et à probablement aussi à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new_section.AddSection(...)
    d'autre part (mais je ne sais pas ce que fait AddSection donc c'est plutôt une supposition vu le nom de la méthode). Comme new_section est instancié une seule fois, à chaque tour de boucle tu ajoutes des sections qui s'ajoutent à celles ajoutées précédemment (tours de boucle précédents). Ce qui ne doit pas aider.

    Essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while (ligne != null)
    {
        ...
        Section new_section = new Section();
        new_section.AddSection(...);
        liste_sections.Add(new_section);
        ...
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    et bien ça c'est de la réponse rapide :p, merci StormimOn, le problème était bien lié au fait que l'instruction Section new_section = new Section(); était en dehors de la boucle while, tout fonctionne correctement

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

Discussions similaires

  1. Réponses: 40
    Dernier message: 15/12/2013, 20h05
  2. [POI] Problème de lecture des fichiers Word
    Par Dari dans le forum Documents
    Réponses: 9
    Dernier message: 05/07/2007, 14h08
  3. [DOM4J] Problème de lecture de fichier xml avec dom4j
    Par santana2006 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 05/04/2006, 16h52
  4. Problème de lecture de fichier Excel
    Par cocaetjusdorange dans le forum Langage
    Réponses: 4
    Dernier message: 08/02/2006, 11h08
  5. Problème de lecture de fichier Oracle 9.2
    Par fortlow dans le forum Oracle
    Réponses: 4
    Dernier message: 14/11/2005, 16h48

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