Rechercher la fin d'une liste dans un fichier.

Vidou - 4 déc. 2014 à 09:47
acive Messages postés 122 Date d'inscription vendredi 29 août 2014 Statut Membre Dernière intervention 14 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

9 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
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 ?
0
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
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.
0
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à !
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 déc. 2014 à 10:36
Je t'ai répondu (sur la base de tes dernières précisions) et ne change pas un seul iota à ma réponse.
Bonne chance

0
Je bloque, je crois ne pas avoir tout saisis :/
je fait ça :

Dim essais = Split("")
essais.Concat(essais)


si j'ai bien compris pour commencer ! mais après je comprends pas la suite
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
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.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
4 déc. 2014 à 13:28
0
acive Messages postés 122 Date d'inscription vendredi 29 août 2014 Statut Membre Dernière intervention 14 décembre 2016
5 déc. 2014 à 15:53
0
Rejoignez-nous