Problème de Readline

Résolu
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 - 28 juin 2005 à 11:24
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 - 28 juin 2005 à 14:10
Bonjour,



J'aimerais utiliser la fonction readline pour parcourir un fichier
texte. J'ai remarqué que cela pose problème en exécution en pas à pas.
Readline continue à parcourir les lignes entre chaque "exécuter
l'instruction suivante".

Voilà le texte que j'ai dans mon fichier, et je voudrais retrouver la date de la première ligne commencant par "MES" :



Ligne1;var1;var2

Ligne2;var3;var1

Ligne3;var4

LigneN;varN;varM;varW

MES1;28/06/2005;11:12:50;var3;etc...

MES2;28/06/2005;11:12:51;var2;etc...



Voilà comment je procède :



string DateDebut= "";

using (StreamReader sr = new StreamReader(fileName))

{

while (!(sr.ReadLine().StartsWith("MES")))

{

//ici, ne fait rien

}

DateDebut = sr.ReadLine(); //quand j'arrive ici, sr.readline() vaut " MES2;28/06/2005; 11:12:51;var2;etc..." et pas "MES1;28/06/2005;11:12:50;var3;etc..."

sr.Close();

}

string[] temp = DateDebut.Split(';');

DateDebut = temp[1];



Le problème est qu'il me retourne la ligne commençant par "MES2", cad une ligne trop loin.



Autre question sur readline :



Comment retourner la dernière ligne de mon fichier qui commence elle aussi par "MES" ?

9 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
28 juin 2005 à 11:42
justement non, ta première question n'est pas résolu avec ta solution

puisqu'a chaque fois que tu fais se.ReadLine(), avances d'une ligne dans ton fichier, donc tu avances là de 2 lignes à chaque fois...

la solution :
do {
DateDebut = sr.ReadLine();
} while (!DateDebut.StartWith("MES"));

<HR>
Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
3
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
28 juin 2005 à 11:44
la seconde solution est plus "corsée" :

string ligne;
while ((ligne = sr.ReadLine()) != null) {
if (ligne.StartsWith("MES")) {
DateFin = ligne;
}
}


<HR>
Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
3
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
28 juin 2005 à 11:32
normal...
using (StreamReader sr = new StreamReader(fileName))
{
while (!(DateDebut =sr.ReadLine().StartsWith("MES")))
{
//ici, ne fait rien
}
//DateDebut = sr.ReadLine(); //quand j'arrive ici, sr.readline() vaut "MES2;28/06/2005;11:12:51;var2;etc..." et pas "MES1;28/06/2005;11:12:50;var3;etc..."
sr.Close();
}


<HR>
Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
0
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 9
28 juin 2005 à 11:35
Bon la première question est résolue, je fais ca :

while (!(sr.ReadLine().StartsWith("MES")))
{
//ici, ne fait rien
DateDebut = sr.ReadLine();
}

Par contre pour la deuxième question :-) suis tjrs preneur
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
28 juin 2005 à 11:49
string DateDebut="";

string sLigne;
using (StreamReader sr = new StreamReader(fileName))
{

sLigne=sr.ReadLine();

while (sLigne)
{

if (!sLigne.StartsWith("MES")) sLigne=sr.ReadLine();

else

{

//ton traitement

}



}

sr.Close();



Celà devrait fonctionner


Théo
0
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 9
28 juin 2005 à 11:58
Théo, ta méthode est la même dans le principe que sebmafate.



Juste un pitit truc qui n'allait pas (je l'ai testé aussi)

while(sLigne!=null) car sLigne n'est pas un bool. Sinon ca marche, merci.



>Seb : tes deux méthodes marchent pour ce que je voulais, cimer
0
cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
28 juin 2005 à 13:59
Seb est trop rapide...
Théo
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
28 juin 2005 à 14:02
nan... pas trop rapide... j'avais la solution en tête... c'est différent :p


<HR>
Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
0
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 9
28 juin 2005 à 14:10
Messieurs, ne nous emportons pas,



ne vous inquiétez pas, j'aurais d'ici peu de temps, d'autres fabuleuses
énignes concernant les readline, et autres méthodes pour parcourir un
fichier texte.



A vous de vous départagez, lol...
0
Rejoignez-nous