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 :

readline ligne suivante


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 43
    Par défaut readline ligne suivante
    Bonjour,

    Voila j'ai une procédure qui me permet de parcourir les lignes d'un fichier :

    Code :
    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
    while ((ligne = sr.ReadLine()) != null)
                    {
                        lineNumber++;
                        if (ligne.Contains("ERROR"))
                        {
                            string va_mot;
                            va_mot = ligne.Substring(0, 1);
                            va1 = ligne.Substring(0, 4);
                            va2 = ligne.Substring(4, 2);
                            va3 = ligne.Substring(6, 2);
                            va4 = va3 + "/" + va2 + "/" + va1;
                            va5 = ligne.Substring(9, 8);
                            va6 = ligne.Substring(17);
                            listeErreurs.Add(string.Format("{0}\t{1}\t{2}\t      {3}", lineNumber, va4, va5, va6));
     
                            //traitement ligne suivante
     
                        }
                    }
    Ce que je voudrai c'est au niveau du traitement ligne suivante exécuté un traitement qui me permettrai d'aller a la ligne et de dire que si cette ligne débute par " " alors on l'ajoute a listeErreur. J'ai essayer plusieurs chose mais sans trouver la solution. C'est ce "aller a la ligne que je n'arrive pas à coder.

    Pour exemple :

    54654654 DEBUG blablabla
    87678687 Info blabla
    15611312 ERROR blablabla
    system blabla
    system blabla
    54544566 Info blabla

    et donc je voudrai récupérer :15611312 ERROR blablabla
    system blabla
    system blabla

    j'ai essayer de mettre : if(line.StartWith(' ')) juste aprés le while mais sa me donne toutes les lignes qui commencent par " " et moi je ne veux que celle se trouvant aprés une ligne où apparait le mot "ERROR".

    Voila j'espere que vous pourez m'éclairer.

    Merci d'avance.

  2. #2
    Membre expérimenté
    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
    Par défaut
    Ce n'est pas un problème de language mais un problème de cheminement logique !

    Pour t'aider mais ne pas ecrire le code a ta place, je dirais que tu peux traiter ca avec un flag bolleen qui t'informe de l'etat de la ligne précédente.

  3. #3
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Un booléen ou une variable "lastErrorLine" contenant le numéro de la dernière ligne contenant le mot "ERROR".

    Ainsi, tu testes si StartWith(' ') et si lastErrorLine + 1 == lineNumber

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 43
    Par défaut
    Voila c'est bon j'ai réussi, ca fonctionne merci pour ta réponse !!! voila ce que j'ai fait :

    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
     
    bool flag = false;
    while ((ligne = sr.ReadLine()) != null)
                        {
                            lineNumber++;
                            if(ligne.StartsWith("2"))
                            {
                                flag = false;
                            }
     
                            if (flag == true)
                            {
                                listeErreurs.Add(string.Format("{0:0000000}/t{1}", lineNumber, ligne));
                            }
                            else
                            {
                            if (ligne.Contains(listView1.Items[i].Text))
                            {
                                flag = true;
                                va1 = ligne.Substring(0, 4);
                                va2 = ligne.Substring(4, 2);
                                va3 = ligne.Substring(6, 2);
                                va4 = va3 + "/" + va2 + "/" + va1;
                                va5 = ligne.Substring(9, 8);
                                va6 = ligne.Substring(17);
                                listeErreurs.Add(string.Format("{0:0000000}\t{1}\t{2}\t      {3}", lineNumber, va4, " " + va5, va6));
                                listeErreurs.Sort();
     
                            }
                            }
                            Cursor.Current = Cursors.AppStarting;
                        }
                        sr.Close();
    Merci encore de m'avoir aider !!!

  5. #5
    Membre expérimenté
    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
    Par défaut
    Salut

    Pourquoi effectue-tu le tri a chaque insertion ?
    Et pas une seule fois a la sortie de la boucle

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 43
    Par défaut
    oups effectivement il est mal placé, je l'ai mis a la fin de la boucle while.

    Merci

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

Discussions similaires

  1. Passer à la ligne suivante (ReadLine());
    Par Rusty2096 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 08/07/2009, 08h10
  2. [VBA-E]Prise en compte ligne suivant condtition multiple
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 04/08/2006, 12h05
  3. [Access] Max + 3 autres lignes suivantes
    Par Le Pharaon dans le forum Langage SQL
    Réponses: 8
    Dernier message: 28/07/2006, 14h44
  4. Comment allez vers la ligne suivante d'un dbgrid
    Par Karim1971 dans le forum Bases de données
    Réponses: 7
    Dernier message: 12/05/2006, 11h57
  5. VBA EXCEL - Sélection d'une ligne suivant saisie
    Par brethomeau dans le forum Macros et VBA Excel
    Réponses: 48
    Dernier message: 15/11/2005, 17h41

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