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 :

Utilisation du switch/case avec un StreamReader


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Points : 56
    Points
    56
    Par défaut Utilisation du switch/case avec un StreamReader
    bonjour,
    j'ai un fichier texte comme suit:
    BACHE BACHE modify
    j'utilise le code suivant:
    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
    StreamReader monStreamReader = new StreamReader(@"D:\simo.txt");
                string ligne = monStreamReader.ReadToEnd();
                //string s = ligne;
                //MessageBox.Show(s);
                switch (ligne) { 
                    case "Bouche d'arrosage":
                        FChoix t = new FChoix();
                        t.ShowDialog(this);
                        break;
                    case "simo":
                        FChoix f = new FChoix();
                        f.ShowDialog(this);
                        break;
                    default:
                        MessageBox.Show("ça n'exsite pas");
                        break;
    le probleme est que a chaque fois j'ai le messagebox "ça n existe pas"
    je ne sais pas d'ou vient l'erreur.

    merci de m'aider.

  2. #2
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Août 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 13
    Points : 16
    Points
    16
    Par défaut
    Hello,

    Quand tu debug, qu'y a-t-il dans ta string ligne?

    N'y aurait-il pas de \n à la fin? Sinon un ligne.Contains() devrais pouvoir aider...

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string ligne = monStreamReader.ReadToEnd();
    Tout le contenu de monStreamReader va aller dans la variable ligne.

    Si la lecture doit s'effectuer ligne par ligne, il va falloir modifier ça...

    BACHE BACHE modify
    Késako ? Surtout qu'après tu testes "simo" et "Bouche d'arrosage" ... on comprend rien.

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Points : 56
    Points
    56
    Par défaut RE
    Bonjour
    le fichier texte contient: bache bache ...
    et quand je fais le test sur par exemple si bach existe avec le switch , normallement ça existe donc le resultat doit etre autre chose que default, mais au contraire j'ai toujours le default, je ne sais pas pourquoi?
    et quand je vois ce que contient ligne je trouve qu'elle contient le contenu du fichier texte

  5. #5
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut

    D'abord comme l'a dis Kaidan, tu devrais utiliser un ReadLine plutot qu'un Readtoend

    Ensuite il existe des methodes permettant de manipuler des string

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Contains()
    IndexOf()
    Split()
    StartWith()
    etc..
    qui te permettront certainement des resultat un peu plus réaliste qu'un switch brutal

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Points : 56
    Points
    56
    Par défaut RE
    JE DOIS utiliser le switch car j ai plusiurs possibilité a tester!!
    j ai essayé avec la modification du ficher text:alors au lieu d avoir un esapce entre simo et bache et bache,j ai ecrit chaque mot dans une ligne et quand j utilise la methode readline ça marche mais s ne contient que le premier mot!!alors que lorsque j utilise read to end ,la variable s contient tous les mots mais en compilant je n aboutit a rien!!je n ai rien compris!help

  7. #7
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mais en compilant je n aboutit a rien!!je n ai rien compris!help
    Pour comprendre il faudrait commencer par lire des cours / tutos, ... ça ne tombe pas du ciel comme ça. Et à priori tu n'as rien compris au switch.

    Le switch c'est juste une succession de if ... else. En gros
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int maVariable;
    ...
    swich (maVariable)
    {
        case 1:
        case 2:
            break;
        case 3:
            break;
        default:
            break;
    }
    revient à faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int maVariable;
    ...
    if (maVariable == 1 || maVariable == 2)
    {
    }
    else if (maVariable == 3)
    {
    }
    else
    {
    }
    Résultat, suivant le test il faut passer par le if ... else car on peut faire beaucoup plus de chose (==, != <=, >=, String.IsNullOrEmpty, ...). Donc non, tu ne DOIS PAS forcément utiliser un switch.

    Dans ton cas de figure, avec un ReadToEnd tu récupères l'intégralité du texte de ton fichier dans une chaîne. A ce moment n'espère pas pouvoir tester la présence d'un mot de cette chaîne avec ton switch car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ("mon super texte contenu dans le fichier qu'il est long" == "fichier")
    {
    }
    ne rentrera jamais dans le if (et donc dans les clauses du switch, si tu as bien tout suivi). On a le même problème avec une lecture ligne à ligne (ReadLine). Sauf si le contenu du fichier / de la ligne se limite à ce mot bien évidemment.

    Dans ton cas tu peux lire ligne à ligne (ReadLine) s'il n'y a pas de césure (i.e. un mot sur deux lignes coupé par un tiret) ou bien en entier (ReadToEnd). Ensuite tu dois tester l'existence du mot dans la chaîne, le mieux étant d'utiliser une surcharge de la méthode String.IndexOf.

    Typiquement String.IndexOf(String, StringComparison) ou String.IndexOf(String, Int32, StringComparison) pour pouvoir indiquer le type de comparaison (la casse doit elle entrer en jeu ou non) et suivant que tu ais besoin ou non de continuer la recherche après avoir trouvé le mot (à ce moment on doit spécifier l'index de recherche pour continuer après le mot trouvé précédemment).

  8. #8
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut

    Mon chapeau a Stormimonn pour l'effort de cette magnifique explication

  9. #9
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    Quelle patience, pour moi c'était peine perdu...

  10. #10
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 106
    Points : 56
    Points
    56
    Par défaut RE
    MERCI StormimOn POUR Votre explication!!
    en effet j ai mal utilisé readtoend,je ne savais pas qu elle prendrai toute la ligne dans une chaine de caractere!!
    j'ai utilisé le readline avec une petite modif dans le fichier texte pour avoir chaque mot dans une ligne
    mrci

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

Discussions similaires

  1. If /Else & Switch case avec plusieurs paramètres
    Par ralek dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 07/07/2010, 19h28
  2. Switch Case avec ToolStripMenu
    Par Zhamy dans le forum C#
    Réponses: 9
    Dernier message: 20/04/2010, 10h22
  3. switch case avec variable dans case
    Par lematteur dans le forum C
    Réponses: 5
    Dernier message: 17/04/2009, 12h08
  4. switch case avec code généré
    Par hoyohoyo dans le forum Langage
    Réponses: 7
    Dernier message: 27/08/2008, 08h37
  5. Switch case avec expression réguliere
    Par neptunia dans le forum Langage
    Réponses: 5
    Dernier message: 14/03/2008, 12h51

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