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
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.