yabiyou
Messages postés43Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention 6 septembre 2007
-
23 août 2007 à 17:47
yabiyou
Messages postés43Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention 6 septembre 2007
-
24 août 2007 à 16:36
Voila mon problème
J'ai un fichier texte, Nomfichier[0], je le parcours avec streamearder et stok les valeurs dans une arraylist. je veux repérer dans mon fichier le numero de la ligne contenant "# heure d'acquisition". Je n'arrive pas à savoir si c'est le bon code car quand j'essaie de convertir repere en string et l'afficher dans un label j'ai un message d'erreur...
voicii le code:
StreamReader
sr =
new
StreamReader(Nomfichier[0]);
String ligne;
ArrayList maListe =
new
ArrayList();
int taille;taille = 0;
while ((ligne = sr.ReadLine()) !=
null){
maListe.Add(ligne);
}
sr.Close();
int repere =maListe.IndexOf(
"# heure d'acquisition");label1.Text = repere.ToString;
cs__Syl_
Messages postés66Date d'inscriptionvendredi 20 octobre 2006StatutMembreDernière intervention25 février 20082 24 août 2007 à 15:31
Ok
On va rajouter un niveau de détail pour essayer de comprendre ce qu'il se passe
Si ta liste contient la bonne valeur c'est quand on récupère la valeur d'un de ses objets qu'on doit mal s'y prendre.
Je crois avoir pigé pourquoi ca marchait pas essaie de mettre >=0 au lieu de >0 dans le test sur le IndexOf
je suis pratiquement sûr que ca vient de là (l'index recherché étant 0 puisque tu recherche la ligne toute entière, si on lui demande de faire quelque chose si c est strictement plus grand que 0 c est normal qu'il ne fasse rien)
cs__Syl_
Messages postés66Date d'inscriptionvendredi 20 octobre 2006StatutMembreDernière intervention25 février 20082 23 août 2007 à 18:00
Bonjour,
tel qu'est écrit ton code tu récupère la position de la chaine "# heure d'acquisition" dans ton objet liste.
L'erreur que tu obtiens est logique puisque c est dans les objets de ta liste (maListe[unePosition]) que tu as inséré les lignes de ton fichier.
Tu peux donc boucler sur tous les éléments de ta liste afin de regarder dans chacun d'entre eux si la chaine que tu cherches s'y trouve.
int laLigne=-1;
for(int i=0;i<maListe.Items.Count;i++)
{
if(maListe[i].IndexOf("tachaine")>0)
{
laLigne=i;
}
}
label1.Text = laLigne.ToString();
(je suis pas sur pour la récupération de la taille de la liste, le Items.Count, mais de mémoire je crois que c est ca)
Tu es sûr que la chaine en question n'apparait qu une fois dans le fichier ? Sinon tu ne récupèreras que la ligne de sa derniere occurence avec cette méthode.
cs__Syl_
Messages postés66Date d'inscriptionvendredi 20 octobre 2006StatutMembreDernière intervention25 février 20082 24 août 2007 à 11:59
La ligne existe dans le fichier ?
avec des xx.xx ?
si tu ouvres ton fichier dans un editeur de texte et que tu fais une recherche pour "# liste des mesures : Balayage=xx.xx Amplitude=xx.xx Phase=xx.xx [amp. phase pour voies suivantes]" il trouve ta ligne ?
Quand tu debug tu peux voir la ligne dans ta liste ?
yabiyou
Messages postés43Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention 6 septembre 2007 24 août 2007 à 13:19
Quand j'ouvre le fichier avec notepad il me trouve bien la ligne.
Par contre je sais pas utiliser le debug... ça fait une semaine que je fait du C# seulement.
cs__Syl_
Messages postés66Date d'inscriptionvendredi 20 octobre 2006StatutMembreDernière intervention25 février 20082 24 août 2007 à 14:47
Bon donc à priori la ligne existe dans le fichier
Pour le Debug, tu peux mettre des points d'arrets
Tu cliques dans la fine colonne grise à gauche pour qu'un point rouge apparaisse en face de la ligne sur laquelle tu souhaites que le programme s'arrete.
Tu peux en mettre un sur la ligne
for(i=0;i<maListe.Count;i++)
Ensuite quand tu vas lancer ton appli via la touche F5, lorsque le programme arrivera à cette ligne il s'arrêtera et tu pourras voir le contenu de ta liste soit en cliquant dessus soit dans l explorateur automatique (les onglets du bas)
une fois que tu peux voir ce qu'il y a dans ta liste regarde aux environs de liste[74] pour voir ce qu'elle contient.
N'hésite pas à reposer des questions si je n'ai pas été assez précis (ce qui est surement le cas :))
yabiyou
Messages postés43Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention 6 septembre 2007 24 août 2007 à 15:19
Ok, je vois à peu près. J'ai fait un point d'arret au niveau que tu m'a dit. Maliste contient bien ""# liste des mesures : Balayage=xx.xx Amplitude=xx.xx Phase=xx.xx [amp. phase pour voies suivantes]" à l'indice 74... j'ai fait une exécution pas à pas et la valeur de lign ne change pas au passage à i=74...
cs__Syl_
Messages postés66Date d'inscriptionvendredi 20 octobre 2006StatutMembreDernière intervention25 février 20082 24 août 2007 à 15:32
On laisse tomber le niveau de détails (début du post précédent) qui consistait à passer par une string intermediaire lors de la recuperation de la valeur d'un element de la liste)