Dll lirefichier ini

Description

Bonjour à tous,

Ci-joint la source d'une DLL me permettant de lire , écrire et supprimer dans un fichier INI.

Le principale du code est issur de la source de SupraDolph (http://www.vbfrance.com/codes/INI-VB-NET_7709.aspx#addcomment) que j'ai adapter dans un DLL en rendant le chemin et le nom du fichier INI paraméttrable.

Source / Exemple :


Public Class FichierIni

#Region "Variable"

    'Nom du fichier INI
    Dim FichierINI As String
    'Constante
    Const MAX_ENTRY As Integer = 32768

#End Region
   
#Region "Définition du chemin et du nom du fichier INI"

    'Déclaration de la propriété du chemin du fichier
    'Renseignement de la propriété "CheminFichier"

    Public Property CheminFichier()

        'Récupère la propriété "CheminFichier"
        Get
            CheminFichier = FichierINI
        End Get

        'Renseigne la propriété "CheminFichier"
        Set(ByVal Value)
            FichierINI = Value
        End Set

    End Property

#End Region

#Region "Lire INI"

    Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As System.Text.StringBuilder, ByVal nSize As Integer, ByVal lpFileName As String) As Integer

    'Cette API permet de lire des fichiers d'initialisations. La fonction retourne 0 si la lecture du fichier d'initialisation a échoué, sinon elle retourne 1. 
    'lpApplicationName définit le nom de la section, 
    'lpKeyName définit le nom de la clef, 
    'lpDefault retourne la valeur par défaut si la clef n'est pas définie, 
    'lpReturnedString contient la valeur de la clef si elle existe sinon elle contient la valeur lpDefault, 
    'nSize est la taille de la variable lpReturnedString en octet, 
    'lpFileName définit le nom du fichier d'initialisation. 

    Function LireINI(ByVal Entete As String, ByVal Variable As String) As String
        Dim defval As String = ""
        Try
            Dim StrBuild As New System.Text.StringBuilder(MAX_ENTRY)
            Dim Ret As Integer = GetPrivateProfileString(Entete, Variable, defval, StrBuild, MAX_ENTRY, FichierINI)
            Return StrBuild.ToString
        Catch
            Return defval
        End Try
    End Function

#End Region

#Region "Ecrire INI"

    Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Long

    'Cette API permet de créer ou de modifier vos propres fichiers d'initialisations sans se soucier des détails (par exemple... la gestion des fichiers), si le fichier n'existe pas il est créé, sinon il est modifié. La fonction retourne 0 si la création ou la modification du fichier d'initialisation a échoué, sinon elle retourne 1. 
    'lpApplicationName définit le nom de la section, 
    'lpKeyName définit le nom de la clef, 
    'lpString définit la valeur à ajouter, 
    'lpFileName définit le nom du fichier d'initialisation. 

    Function EcrireINI(ByVal Entete As String, ByVal Variable As String, ByVal Valeur As String)
        WritePrivateProfileString(Entete, Variable, Valeur, FichierINI)
    End Function

#End Region

#Region "Supprime INI"

    Function SupprimeINI(ByVal Entete As String, Optional ByVal Variable As String = Nothing)
        WritePrivateProfileString(Entete, Variable, vbNullString, FichierINI)
    End Function

#End Region

#Region "Sections INI"

    Private Declare Function GetPrivateProfileSectionNames Lib "kernel32.dll" Alias "GetPrivateProfileSectionNamesA" (ByVal lpszReturnBuffer() As Byte, ByVal nSize As Integer, ByVal lpFileName As String) As Integer

    Function SectionsINI() As ArrayList
        SectionsINI = New ArrayList
        Dim Buffer(MAX_ENTRY) As Byte
        Dim BuffStr As String
        Dim PrevPos As Integer = 0
        Dim Length As Integer
        Try
            Length = GetPrivateProfileSectionNames(Buffer, MAX_ENTRY, FichierINI)
        Catch
            Exit Function
        End Try
        Dim ASCII As New System.Text.ASCIIEncoding
        If Length > 0 Then
            BuffStr = ASCII.GetString(Buffer)
            Length = 0
            PrevPos = -1
            Do
                Length = BuffStr.IndexOf(ControlChars.NullChar, PrevPos + 1)
                If Length - PrevPos = 1 OrElse Length = -1 Then Exit Do
                Try
                    SectionsINI.Add(BuffStr.Substring(PrevPos + 1, Length - PrevPos))
                Catch
                End Try
                PrevPos = Length
            Loop
        End If
    End Function

#End Region

End Class

Conclusion :


Super simple et pratique à utiliser.

Soyer indulgent je débute.

Encore merci à SupraDolph pour l'origine

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.