|
FICHIER INI
Dans un fichier INI, les données sont rangées par section, dans chaque
section, vous avez 1 ou plusieurs données (appelé également Clé) qui
ont une valeur. Cela se présente ainsi :
[section1]
Cle1=valeur
Cle2=valeur
[section2]
Cle1=valeur
Cle2=valeur
Pour lire une donnée appartient donc à un clé qui appartient à une
section.
Pour travailler avec ce type de fichier, j'utilises les API (ce sont des
fonctions qui permettent de travailler directement avec Windows). Ce
système est un peu compliqué, mais si vous respectez bien la
déclaration de ces API, vous pouvez travailler avec sans problème.
Lors de l'ouverture, si le fichier n'existe pas, il est créé.
Private Declare Function GetPrivateProfileString Lib
"kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib
"kernel32" Alias "WritePrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpString As Any, _
ByVal lpFileName As String) As Long
Private Declare Function GetPrivateProfileSection& Lib
"kernel32" Alias "GetPrivateProfileSectionA" _
(ByVal lpAppName As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String)
Public Function ExisteSectionIni(Section As String,
Fich As String) As Boolean
Dim Retour As Long
Dim Valeur As String
Valeur = String(32767, 0)
Retour = GetPrivateProfileSection(Section,
Valeur, 32766, Fich)
If Retour > 0 Then ExisteSectionIni = True
End Function
Public Function LireCleIni(Section As String, Cle As String, Fich As
String) As String
Dim Retour As Long
Dim Valeur As String
Valeur = String(256, 0)
Retour = GetPrivateProfileString(Section, Cle,
"", Valeur, 255, Fich)
If Retour > 0 Then
Valeur = Left(Valeur,
Retour)
Else
Valeur =
""
End If
LireCleIni = Valeur
End Function
Public Function EcrireCleIni(Section As String, Cle As String, Valeur As
String, Fich As String) As Boolean
Dim Retour As Long
Retour = WritePrivateProfileString(Section, Cle,
Valeur, Fich)
EcrireCleIni = Retour
End Function
Sub EcrireDonnee()
EcrireCleIni "Personne",
"Nom", "MONIER", "C:\Documents and Settings\Cathy\Mes
documents\Formation\Internet\Vba\Monini.ini"
EcrireCleIni "Personne",
"Prénom", "Cathy", "C:\Documents and Settings\Cathy\Mes
documents\Formation\Internet\Vba\Monini.ini"
End Sub
Sub LireDonnee()
Dim strNom As String, strPrenom As String
strNom = LireCleIni("Personne",
"Nom", "C:\Documents and Settings\Cathy\Mes
documents\Formation\Internet\Vba\Monini.ini")
strPrenom = LireCleIni("Personne",
"Prénom", "C:\Documents and Settings\Cathy\Mes
documents\Formation\Internet\Vba\Monini.ini")
MsgBox strNom & " " & strPrenom
End Sub
Public Sub ListSectionIni(Section As String, Fich As String)
Dim Retour As Long
Dim ListValeur As String, UneVal As String
Dim iPos As Integer
ListValeur = String(32767, 0)
Retour = GetPrivateProfileSection(Section,
ListValeur, 32766, Fich)
If Retour > 0 Then
For iPos = 1 To
Retour
If Mid(ListValeur, iPos, 1) = Chr(0) Then
MsgBox UneVal
UneVal = ""
Else
UneVal = UneVal & Mid(ListValeur, iPos, 1)
End If
Next
End If
End Sub
Sub LireSection()
ListSectionIni "Personne",
"C:\Documents and Settings\Cathy\Mes documents\Formation\Internet\Vba\Monini.ini"
End Sub
|