Vidou
-
4 déc. 2014 à 09:47
acive
Messages postés122Date d'inscriptionvendredi 29 août 2014StatutMembreDernière intervention14 décembre 2016
-
5 déc. 2014 à 15:53
Bonjour,
J'ai un problème avec mon code pour rechercher la fin d'une liste dans mon fichier.
Voici ce que j'ai dans mon dit fichier :
"Nom :
Prenom :
Classe :
6ème
5ème
CM2
CM2
CM2
CM1
dhsd"
Ce que j'aimerais faire c'est me placer a la fin des classes (donc au dessous de CM1) pour y inscrire d'autre classes.
Mon code est le suivant :
Public Sub InsertNewClass(className As String)
' on lit le contenu du fichier que l'on place dans une list de string
Dim lines = File.ReadAllLines(ClassesFileName).ToList()
'on recherche l'index dans cette liste ou se trouve ""Classes :""
Dim classIndex = lines.IndexOf("Classe :")
' on n'en a pas trouvé, on s'en va
If classIndex = -1 Then Exit Sub
''On ajoute 1 ligne à l'index pour ce placer à la ligne en dessous de classe et on cherche la fin de la liste
Do
classIndex += 1
Loop Until classIndex.ToString("")
'on insère la nouvelle classe dans la liste
lines.Insert(classIndex, className)
'on supprime le fichier texte existant
File.Delete(ClassesFileName)
'on recrée le fichier avec le nouveau contenu
File.WriteAllLines(ClassesFileName, lines.ToArray())
End Sub
Voila.
Ce que ce code me fait est qu'il ajoute les fichiers après Classe et non pas à la fin de la liste.
Merci pour votre aide.
P.S. je viens de m'apercevoir qu'on ne le vois pas là mais j'ai une ligne vide entre CM1 et dhsd
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 4 déc. 2014 à 09:55
Bonjour,
Si (je dis "si" car tu ne le précises pas), dshd est TOUJOURS la même chaîne de caractères, il te suffit de prendre tout ce qui est à gauche - 5 caractères, d'y ajouter ton ajout, un retour charriot et dshd, non ?
non car dshd est juste là pour m'assurer que quand j'affiche mes classes ça m'affiche pas la suite.
Je ne sais pas encore ce qu'il y aura a la place mais il y aura d'autres infos.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 4 déc. 2014 à 10:21
Comme quoi il faut savoir être toujours précis d'emblée. Nous avons perdu du temps.
Utilise alors la fonction Split (en éclatant sur dshd) puis concatène le premier élément de l'array ainsi obtenu, ton ajout, "dshd" et le deuxième et dernier élément de l'array résultant du split.
Tout cela est fort simple.
il n'y à pas une méthode qui permettrait simplement de trouver l'endroit où ce trouve l'espace (la ligne vide donc) et d'y insérer le nouveau nom de la classe?
car en fait j'ai pris l'exemple des classes mais j'aurais aussi un nom a rentrer en dessous de nom un prénom, et des résultats de test genre exercice 1, exercice 2 etc : donc si je met un retour à la ligne vide entre chaque données (nom prénom etc) j'espérais appeler ce code avec juste la 1ère valeur a chercher (dans mon cas présent c'est "classe" et chercher à la suite le premier retour à la ligne vide pour y insérer mes nouvelles valeurs.
J'espère que c'est plus clair ^^
merci en tous cas déjà !
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 4 déc. 2014 à 11:24
Je crois t'avoir dit d'éclater (Split) sur le repère (dshd) et non sur "" !
Tu ne peux "travailler" ainsi, au hasard. Ouvre MSDN sur le mot Split et lis.
Tu as par ailleurs sur la toile (et sur ce forum) de nombreux exemples d'utilisation et une foule de discussions (sujet plus que récurrent)
Lis ceci, par exemple
http://www.dotnetperls.com/split-vbnet Il s'agit-là, je le répète, de quelque-chose de très simple.
Moi, je te laisse là, maintenant.