Supprimer une ligne .ini [Résolu]

Zag182 24 Messages postés mercredi 17 octobre 2007Date d'inscription 2 mars 2011 Dernière intervention - 30 sept. 2010 à 11:31 - Dernière réponse : fyc95 6 Messages postés jeudi 31 mai 2012Date d'inscription 20 mars 2014 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

7 réponses

raffika 269 Messages postés dimanche 31 mai 2009Date d'inscription 12 mars 2011 Dernière intervention - 30 sept. 2010 à 11:50
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de raffika
Zag182 24 Messages postés mercredi 17 octobre 2007Date d'inscription 2 mars 2011 Dernière intervention - 30 sept. 2010 à 14:34
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Zag182
Zag182 24 Messages postés mercredi 17 octobre 2007Date d'inscription 2 mars 2011 Dernière intervention - 30 sept. 2010 à 13:38
0
Utile
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!
Commenter la réponse de Zag182
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 30 sept. 2010 à 13:56
0
Utile
au pire, les APIs WritePrivateProfileString & Co

sont là pour là pour ça

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield
fyc95 6 Messages postés jeudi 31 mai 2012Date d'inscription 20 mars 2014 Dernière intervention - 31 mai 2012 à 13:45
0
Utile
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?
Commenter la réponse de fyc95
Utilisateur anonyme - 1 juin 2012 à 19:46
0
Utile
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.
Commenter la réponse de Utilisateur anonyme
fyc95 6 Messages postés jeudi 31 mai 2012Date d'inscription 20 mars 2014 Dernière intervention - 4 juin 2012 à 11:39
0
Utile
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
Commenter la réponse de fyc95

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.