Suppression d'une section d'un fichier ini

Contenu du snippet

J'ai trouvé sur internet des codes très pratiques pour creer et lire des fichiers INI.
Par contre, il n'était à chaque fois possible d'ajouter ou écraser une valeur.
J'ai eu beau chercher (pas assez peut-être), je n'ai pas trouvé de fonction
permettant de supprimer une section entière.
J'ai donc relevé mes petites manches et écrit cette fonction que voici.

Source / Exemple :


'Supprime une section d'un fichier INI crée avec l'INI API
Public Sub DeleteIniSection(Filename As String, Section As String)
Dim IniLine As String
Dim SectionFound As Boolean
Dim NewSectionAfterRemoval As Boolean

Open Filename For Input As 1  'On ouvre le fichier donné en parametre
Open Filename + ".bak" For Output As #2  'Ce fichier collectera les sections que l'on souhaite garder
SectionFound = False
NewSectionAfterRemoval = False
Input #1, IniLine 'on chercher la bonne section
While Not EOF(1)
    If Trim$(IniLine) = "[" + Trim$(Section) + "]" Then 'Si la section est celle que l'on cherche
        SectionFound = True
        While (Not EOF(1)) And SectionFound  'on saute tout simplement la section
            Input #1, IniLine
            If Left$(IniLine, 1) = "[" Then  'jusqu'à ce qu'une nouvelle section soit trouvée
                SectionFound = False
                NewSectionAfterRemoval = True
                Print #2, IniLine
            End If
        Wend
    Else
        If Not EOF(1) Then Print #2, IniLine
    End If
    If Not EOF(1) Then Input #1, IniLine
Wend
If NewSectionAfterRemoval Then Print #2, IniLine 'cette bidouille est necessaire pour eviter une duplication ou une suppression de la derniere ligne de l'INI...
Close #2
Close #1
Kill Filename       'on inverse les fichiers
FileCopy Filename + ".bak", Filename
Kill Filename + ".bak"
End Sub

Conclusion :


Normalement les commentaires devraient suffire.

Pour l'appeller, c'est tout bête :

DeleteIniSection (nom_du_fichier_ini, nom_de_la_section_a_supprimer)

Bonne utilisation.

A voir également

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.