Supprimer une ligne .ini [Résolu]

Signaler
Messages postés
24
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
2 mars 2011
-
Messages postés
6
Date d'inscription
jeudi 31 mai 2012
Statut
Membre
Dernière intervention
20 mars 2014
-
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

Messages postés
269
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
12 mars 2011

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.
Messages postés
24
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
2 mars 2011

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
Messages postés
24
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
2 mars 2011

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!
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
au pire, les APIs WritePrivateProfileString & Co

sont là pour là pour ça

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
6
Date d'inscription
jeudi 31 mai 2012
Statut
Membre
Dernière intervention
20 mars 2014

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?

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.
Messages postés
6
Date d'inscription
jeudi 31 mai 2012
Statut
Membre
Dernière intervention
20 mars 2014

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