Partage
  • Partager sur Facebook
  • Partager sur Twitter

C# - Piocher dans un .txt une valeur aléatoire

Sujet résolu
    16 mai 2011 à 5:57:20

    Bonjour,

    Voici mon problème: je désire placer dans un textbox un nom qui se trouve dans un .txt. Par contre, ce nom devra être tiré au hasard, chaque ligne du fichier .txt correspond à un nom. Je dois également utiliser deux autres méthodes que j'ai préalablement codées: NbLignes, qui retourne le nombre de lignes dans le .txt et NomAlea, qui retourne le contenu de la ligne choisie (aléatoirement donc). Elle me semble correcte, une vérification de votre part est nécessaire !


    /// <summary>
            /// Retourne le nombre de lignes dans le fichier dont le nom est nomFic
            /// </summary>
            private int NbLignes(string nomFic)
            {
                try
                {
    
                    StreamReader flux = null;
                    if (!File.Exists(nomFic))
                        throw new ArgumentException("Ce fichier n'existe pas");
                    flux = new StreamReader(nomFic);
                    int nbLignes = 0;
                    while (flux.ReadLine() != null)
                        nbLignes++;
                    flux.Close();
                    return nbLignes;
                }
    
                catch (ArgumentException err)
                {
                    MessageBox.Show("Fichier qui n'existe pas ou numéro de ligne incohérent\n" + err.ToString());
                    // Retourner une chaîne vide car une erreur est survenue
                    return int.Parse("");
                }
    
                 catch (Exception err)
                {
                    MessageBox.Show("Erreur imprévue -->\n" + err.ToString());
    
                    // Retourner une chaîne vide car une erreur est survenue
                    return int.Parse("");
                }
    
            }
    







    /// <summary>
            /// Retourne le contenu de la ligne noLigne du fichier dont le nom est nomFic
            /// </summary>
            private string NomAlea(string nomFic, int noLigne)
            {
                StreamReader flux = null;
                try
                {
                    if (!File.Exists(nomFic))
                        throw new ArgumentException("Ce fichier n'existe pas");
                    flux = new StreamReader(nomFic);
    
                    string ligneLue = "";
                    for (int i = 1; i <= noLigne; i++)
                    {
                        ligneLue = flux.ReadLine();
                        if (ligneLue == null)
                            throw new ArgumentException("Le numéro de ligne est incohérent");
                    }
                    return ligneLue;
                }
    
                catch (ArgumentException err)
                {
                    MessageBox.Show("Fichier qui n'existe pas ou numéro de ligne incohérent\n" + err.ToString());
                    // Retourner une chaîne vide car une erreur est survenue
                    return "";
                }
    
                catch (Exception err)
                {
                    MessageBox.Show("Erreur imprévue -->\n" + err.ToString());
    
                    // Retourner une chaîne vide car une erreur est survenue
                    return "";
                }
                finally
                {
                    if (flux != null)
                        flux.Close();
                }
            }
    



    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      16 mai 2011 à 8:06:56

      T'as plutôt intérêt à lire le fichier, stocker chaque ligne dans un tableau de string, puis opérer sur ce tableau.
      De cette façon tu sépares les méthodes "intelligentes" de la méthode "bête" qui récupère les données, et tu n'as à lire le fichier qu'une fois.
      • Partager sur Facebook
      • Partager sur Twitter
        16 mai 2011 à 8:11:21

        Bonjour,

        Tout d'abord ça ne sert à rien de throw des erreurs, pour les catcher 5lignes plus là.
        Sinon j'aime pas trop le fait de passer à chaque fois le nom du fichier, ça force à le ré-ouvrir deux fois, tu pourrai juste passer le stream et le repositionner au début.

        return int.Parse("");
        


        pas beau :( si tu veut retourner quelque chose, retourne -1,default(int) au choix :)
        • Partager sur Facebook
        • Partager sur Twitter

        C# - Piocher dans un .txt une valeur aléatoire

        × 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