Manipulez les fichiers ini avec un module de class

Description

Après m'être inspiré de beaucoup de sources ici même pour lire,ecrire et supprimer dans les fichiers ini, j'ai fini par faire un module de class permettant une bonne souplesse pour l'utilisation des fichiers ini. Il comprend les principales fonctions: lire - ecrire - supprimer des valeurs ou des sections.
Pré-requis: ajouter à votre projet le module de class DLLfichierini.cls, son utilisation est simple dans un sub ou une fonction:

'declarer la variable qui fera appel au module de class, c est obligatoire, vous pouvez en appelez autant que vous le desirez avec des noms différents
dim nom_de_votre_variable as new DLLfichierini
'il faut maintenant lui designer le fichier ini
nom_de_votre_variable.Set_fichier c:/chemin_de_votre_fichier
'vous pouvez recupérer dans une variable le nom du fichier ini
variable_bis= nom_de_votre_variable.Get_fichier
'pour enregistrer une donnée beta dans une section alpha de valeur x on aura
nom_de_votre_variable.WriteIni "alpha", "beta", "x"
'pour lire cette donnée dans une variable bis, la variable recupérée est formatée en string ne l'oublié pas, des changements seront à effectuer selon vos besoins(CINT, CBOOL,etc......)
variable_bis= nom_de_votre_variable.GetIni("alpha", "beta")
'pour supprimer cette valeur
nom_de_votre_variable.SupIni "alpha", "beta"
'pour supprimer la section
nom_de_votre_variable.SupsectionIni "alpha"

Source / Exemple :


Option Explicit
'declaration du fichier string
Private fichier_ini As String

'ici les fonctions appi utilisée
Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

'fonction appi pour lire et ecrire un fichier ini
'api recupere une valeur
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias _
    "GetPrivateProfileStringA" (ByVal lpApplicationName As String, _
    ByVal lpKeyName As Any, _
    ByVal lpDefault As String, _
    ByVal lpReturnedString As String, _
    ByVal nSize As Long, _
    ByVal lpFileName As String) As Long
'api ecrit une valeur
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias _
    "WritePrivateProfileStringA" (ByVal lpApplicationName$, _
    ByVal lpKeyName As Any, _
    ByVal lpString As Any, _
    ByVal lpFileName$) As Long
'api ecrit une section
Private Declare Function WritePrivateProfileSection Lib "kernel32" Alias _
    "WritePrivateProfileSectionA" ( _
     ByVal lpAppName As String, _
     ByVal lpString As Any, _
     ByVal lpFileName As String) As Long
'fonction pour initialiser le fichier
'
Public Function Set_fichier(ByVal nom_fichier As String)
    If nom_fichier <> "" Then
        fichier_ini = nom_fichier
    Else
        MsgBox "Problème sur le nom de fichier ini", vbCritical + vbOKOnly, "Erreur"
    End If
End Function
'fonction pour retourner le nom de fichier
'
Public Function Get_fichier() As String
    If fichier_ini <> "" Then
        Get_fichier = fichier_ini
    End If
End Function

'fonction de lecture dans les fichiers init
'
Public Function GetIni(ByVal section As String, ByVal Variable As String) As Variant
Dim strRetour As String
Dim SectionArr() As String, m As Integer
Dim longueur As Integer
    If fichier_ini <> "" And Dir(fichier_ini) <> "" Then
        strRetour = String(65000, Chr(0))
        longueur = GetPrivateProfileString(section, Variable, "", strRetour, Len(strRetour), fichier_ini)
        GetIni = Left$(strRetour, longueur)
        SectionArr = Split(GetIni, vbNullChar)
        For m = 0 To UBound(SectionArr)
            GetIni = SectionArr(m)
        Next m
    End If
End Function

'fonction d ecriture dans les fichiers init
'
Public Function WriteIni(ByVal section As String, ByVal Variable As String, ByVal valeur As String) As Integer
        If fichier_ini <> "" Then
            WriteIni = WritePrivateProfileString(section, Variable, valeur, fichier_ini)
        End If
End Function

'fonction de suppression une valeur dans les fichiers init
'
Function SupIni(ByVal section As String, ByVal Variable As String) As String
    If fichier_ini <> "" And Dir(fichier_ini) <> "" Then
        SupIni = WritePrivateProfileString(section, Variable, 0&, fichier_ini)
    End If
End Function

'fonction de suppression une section dans les fichiers init
'
Function SupsectionIni(ByVal section As String) As String
    If fichier_ini <> "" And Dir(fichier_ini) <> "" Then
        SupsectionIni = WritePrivateProfileSection(section, 0&, fichier_ini)
    End If
End Function

Conclusion :


Un grand merci à tous ceux qui partagent leurs sources, c'est vraiment très pratique et très instructif. Cette source est un compilé de différentes sources sur le sujet, donc pas la peine de me fustiger avec des "ça existe déjà" ou "encore une" :o))))). Source tester à l'origine sur vb6 (peut etre compatible avec vb5 à voir). Merci de m'avoir lu....

Codes Sources

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.