Supprimer une ligne .ini

Résolu
Zag182 Messages postés 23 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 2 mars 2011 - 30 sept. 2010 à 11:31
fyc95 Messages postés 6 Date d'inscription jeudi 31 mai 2012 Statut Membre Dernière intervention 20 mars 2014 - 4 juin 2012 à 11:39
Bonjour,

Je souhaiterais Supprimer une ligne dans un fichier .INI et faire remonter les lignes d'après(VB.NET)
J'ai trouver plein de façon sur CS mais aucune n'est vraiment concluante
ou ne fait pas ce que je veux et je n'arrive pas à le modifier correctement.

Voilà ce que j'ai :

[b][Section1]
var1=Val1
var2=Val2

[Section2]
var3=Val3
var4=Val4

et je voudrais avoir après effacement

[Section1] 'supression de la ligne et pas de ligne vide après [Section1]
var2=Val2

[Section2]
var3=Val3
var4=Val4/b

Pour le moment j'arrive à écrire, à le lire et remplacer une Val.
Merci d'avance d'avance pour vos réponses.

7 réponses

raffika Messages postés 269 Date d'inscription dimanche 31 mai 2009 Statut Membre Dernière intervention 12 mars 2011
30 sept. 2010 à 11:50
Salut,
avec quel méthode tu remplace les lignes ?
Une méthode : Placer le fichier dans une
variable, le découper ligne par ligne,
supprimer la ligne, la remplacer par ""
en fonction des critères que tu aura définis toi même.
par exemple, verifier si [Section1] est présent,
et supprimer donc la ligne suivante (remplacer cette ligne
par "") puis réécrire le fichier mis à jour.
Instructions de lecture et écriture :
Dim str_texte As String '' Variable str_texte contiendra le fichier
str_texte = System.IO.File.ReadAllText(TextBox5.Text) '' Lit le fichier et le met dans str_texte
MessageBox.Show(str_texte) '' Affiche le fichier
Dim cut() as String '' Crée un tableau
cut = split(str_texte,environment.newline) '' Met le fichier ligne par ligne dans le tableau
'' donc cut(0) contiendra [Section1]
''      cut(1) contiendra var1=Val1 etc.
For i = 0 to cut.count -1 '' Lit le fichier ligne par ligne
if cut(i) = "var1=Val1" then cut(i) = "" '' Supprime la ligne
next i
dim resultat as string =""
for i = 0 to cut.count - 1
resultat &= cut(i) & envionment.newline
next i

System.IO.File.WriteAllText("result.ini", resultat) '' Ecrit le resultat en remplaçant l'ancien fichier

Après tout dépend des critères de mise à jour.
3
Zag182 Messages postés 23 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 2 mars 2011
30 sept. 2010 à 14:34
Non c'est bon j'ai réussi à lui dire dire si ligne = vide copier la ligne d'après tout en faisant un +1 au compteur.

For i = 0 To cut.Count - 1
If cut(i) = "" Then
resultat &= cut(i + 1) & Environment.NewLine
i = +1
Else : resultat &= cut(i) & Environment.NewLine
End If
Next i
3
Zag182 Messages postés 23 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 2 mars 2011
30 sept. 2010 à 13:38
Merci beaucoup j'arrive enfin à supprimer une ligne... ^^
Par contre la suppression de la ligne maintenant vide ne se fait pas, Comment puis-je faire?

Merci Beaucoup!
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 sept. 2010 à 13:56
au pire, les APIs WritePrivateProfileString & Co

sont là pour là pour ça

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0

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

Posez votre question
fyc95 Messages postés 6 Date d'inscription jeudi 31 mai 2012 Statut Membre Dernière intervention 20 mars 2014
31 mai 2012 à 13:45
Je viens de tester cette portion de code mais dès qu'il y a un accent dans le fichier, il le code mal (@?") donc le fichier devient faux, étant en vb2010, auriez vous une solution?
0
Utilisateur anonyme
1 juin 2012 à 19:46
Bonjour,

Je n'ai pas testé et je ne sais pas si cela peut régler ton problème, mais tout d'un coup que ce serait la réponse.

Je suis tombé là-dessus par hasard.
0
fyc95 Messages postés 6 Date d'inscription jeudi 31 mai 2012 Statut Membre Dernière intervention 20 mars 2014
4 juin 2012 à 11:39
En fait il suffisait de mettre
str_texte = System.IO.File.ReadAllText("c:\fichier.ini", System.Text.Encoding.Default) '' Lit le fichier et le met dans str_texte
0
Rejoignez-nous