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 :

Lecture de fichier continue suite à événement [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2011
    Messages : 22
    Par défaut Lecture de fichier continue suite à événement
    Bonjour,

    j'ai comme projet professionnel, développer une application dans le style de trivial poursuite. Au fur est à mesure je rencontre plusieurs problèmes.

    Dans les exigences, mon programme doit lire les questions depuis un fichier et les afficher. Jusqu'ici tout va bien.

    Voici le problème: Lorsque l'événement click de mon button s'effectue le programme doit lire une ligne de mon fichier texte et l'afficher et ceci a chaque clique. Ex:
    - Clique 1, lire et affiche ligne 1 du fichier
    - Clique 2, lire et affiche ligne 2 du fichier


    Print screen de ma form(histoire de visualiser la chose):
    FormScreen | Flickr - Photo Sharing!@@AMEPARAM@@http://farm7.static.flickr.com/6229/6247436537_25e53097c5_m.jpg@@AMEPARAM@@6247436537@@AMEPARAM@@25e53097c5

    Voici mon code(veuillez-m'excuser mais je préfère vous mettre la totalité de mon code afin que vous compreniez mieu mon problème):
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    public partial class Form1 : Form
        {
            List<Question> LeQuizz = new List<Question>();
     
            // String
            const string PicCorrecte = "c:\\303\\Image\\Juste.gif"; // Image correcte
            const string PicIncorrecte = "c:\\303\\Image\\Faux.gif"; // Image fausse
            const int Point = 0; // Point du joueur
     
            // Integer
            int QuestionCourante = 0;
     
            // DateTime
            DateTime TempsUtil = DateTime.Now; // Temps du joueur
     
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void LireEtChargerQuestion() // Lire dans un fichier les questions et les charger dans le formulaire.
            {
                string ligne = null;
                string ID;
                string Cat;
                string Question;
                string choix1;
                string choix2;
                string choix3;
                string réponse;
                string bonneréponse;
     
                StreamReader R = new StreamReader("C:\\303\\QUIZZ.txt");
                ligne = R.ReadLine(); // ligne lue
     
                string[] Tab = ligne.Split('\t'); // Désassemble la ligne avec comme référence TAB
                ID = Tab[0];
                Cat = Tab[1];
                Question = Tab[2];
                choix1 = Tab[3];
                choix2 = Tab[4];
                choix3 = Tab[5];
                réponse = Tab[6];
                bonneréponse = Tab[7];
     
     
                LeQuizz.Add(new Question(int.Parse(ID), Cat.ToString(), Question.ToString(), choix1.ToString(), choix2.ToString(), choix3.ToString(), int.Parse(réponse), int.Parse(bonneréponse)));
     
                lblNumQuestion.Text = "Question numéro " + (QuestionCourante + 1).ToString() + " (" + LeQuizz[QuestionCourante].Cat.ToString() + ")";
                lblEnoncé.Text = LeQuizz[QuestionCourante].Enoncé;
                optR1.Text = LeQuizz[QuestionCourante].Choix1;
                optR2.Text = LeQuizz[QuestionCourante].Choix2;
                optR3.Text = LeQuizz[QuestionCourante].Choix3;
                optR1.Checked = false;
                optR2.Checked = false;
                optR3.Checked = false;
                QuestionCourante++;
     
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
     
                LireEtChargerQuestion();
            }
     
            private void cmdNext_Click(object sender, EventArgs e)
            {
                if (QuestionCourante >= LeQuizz.Count)
                {
     
                    MessageBox.Show("Y'a plus");
                    StreamWriter F = new StreamWriter("C:\\303\\Resultat.txt");
                    F.WriteLine("Ce bozo n'a fait qu'un point");
                    F.Close();
                }
                else
                    LireEtChargerQuestion();
            }
        }
    Merci de m'éclairer, avant que je m'arrache la totalité de mes cheveux.


    Bonne soirée et merci d'avance.

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 3
    Par défaut
    Salut. je crois que ton problème vien du fait que tu n'ouvre pas de Filestream
    pour lire et écrire dans les fichier. A la place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    StreamReader R = new StreamReader("C:\\303\\QUIZZ.txt");
    Essaie sa pour écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FileStream fs = new FileStream("C:\\303\\QUIZZ.txt", FileMode.Open, FileAccess.Read);
    StreamReader sr = new StreamReader(fs);


    Ensuite c'est sr.ReadLine pour lire une ligne et quand tu a fini de lire tu ne doit pas oublier de faire sr.Close(); et fs.Close();

    Et sa pour écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FileStream fs = new FileStream("C:\\303\\Resultats.txt", FileMode.OpenOrCreate, FileAccess.Write);
    StreamWriter sw = new StreamWriter(fs)

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2011
    Messages : 22
    Par défaut
    Salut Fredg26,

    tout d'abord merci d'avoir essayer de m'aider.

    Le problème est que j'aimerai lire et afficher la ligne d'un fichier texte à chaque clique de mon button.

    Pour le moment, mon programme lit la première ligne comme je lui ai dis de le faire mais n'affiche pas la deuxième lorsque l'événement click de mon boutton s'effectue.

    J'espère que vous avez pu comprendre ..

    Merci à vous bonne journée.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 69
    Par défaut
    Salut Ment0r!

    J'ai l'impression qu'à chaque clic sur ton bouton, tu réouvres ton fichier et tu fais un readline(). Donc pour moi à chaque clic, tu relis la première ligne de ton fichier. Je pense qu'il faudrait que ton StreamReader soit en membre de classe et que tu l'ouvres à l'initialisation. Comme ça à chaque readline ton reader affichera bien la ligne suivante dans ton fichier.

    Sinon si tu ne veux pas te prendre la tête avec la lecture d'un fichier à chaque clic, tu pourrais utiliser la méthode "File.ReadAllLines(path)" qui te permet de récupérer toutes les lignes du fichier dans un tableau de string (une ligne / élement du tableau). Comme ça tu as juste à faire des opérations sur le tableau et non sur le fichier.

    Aussi, tiens compte des remarques de Fredg26 pour manipuler ton fichier texte.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 8
    Par défaut
    Salut,

    Tu peux aussi simplement lire le fichier une première fois et stocker ces données dans une collection comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
            private void LireEtChargerQuestion() // Lire dans un fichier les questions et les charger dans le formulaire.
            {
                List<string> lignes = new List<string>();
     
                using (StreamReader sr = new StreamReader(@"C:\303\QUIZZ.txt"))
                {
                    string line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        lignes.Add(line);
                    }
                }
            }
    Ensuite tu manipule ta collection pour lire l'index suivant à chaque événement click.

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

Discussions similaires

  1. Lecture de fichiers wave par événements extérieurs
    Par Jean Breil dans le forum Pascal
    Réponses: 0
    Dernier message: 19/09/2007, 00h19
  2. [jsp]lecture de fichier
    Par antigone dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 04/09/2003, 11h05
  3. [AS400][Intranet][PC] Lecture de "fichiers" AS400
    Par lando dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 16/07/2003, 11h11
  4. Lecture de fichier
    Par Watcha dans le forum x86 16-bits
    Réponses: 13
    Dernier message: 04/03/2003, 20h43
  5. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 09h43

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