Récupération de variables situées dans un fichier inf ou ini

Description

J'ai mis un exemple dans le zip (attention à avoir les ComDlg!)

Le code est pas tellement compliqué et il gère bien des erreurs (de toute manière si la chaine renvoyée est nulle ben c'est qu'il y a une erreur dans les paramètres que vous avez passés)

Note: Pour passer les noms des clés ne mettez pas les crochets, la fonction s'en charge

Source / Exemple :


Option Compare Text

Public Function RetrieveKey(ByVal FileName As String, ByVal KeyName As String, ByVal VarName As String) As String
Dim sResult As String
Dim sCurrentLine As String
Dim KeyFound As Boolean
Dim EndOfKey As Boolean
Dim VarFound As Boolean
Dim i As Integer

KeyFound = False

' SI LE FICHIER N'EXISTE PAS ON QUITTE SANS RIEN RETOURNER
' ON EFFECTUE LA RECHERCHE PARMI TOUS LES FICHIERS
If Dir(FileName, 7) = "" Then
RetrieveKey = vbNullString
Exit Function
End If

Open FileName For Input As #1

' *******************
' RECHERCHE DE LA CLE

Do While (Not EOF(1)) And KeyFound = False

Line Input #1, sCurrentLine
If sCurrentLine = "[" & KeyName & "]" Then
KeyFound = True
End If

Loop

' SI PAS DE CLE TROUVEE ALORS ON QUITTE ET ON NE RENVOIE RIEN
If Not KeyFound Then
RetrieveKey = vbNullString
Close #1
Exit Function
End If

' ************************
' RECHERCHE DE LA VARIABLE
EndOfKey = False
VarFound = False

Do While (Not EndOfKey) And (Not VarFound)
    Line Input #1, sCurrentLine
    
    ' CONDITIONS D'ARRET
    If EOF(1) Then EndOfKey = True   'SI FIN DE FICHIER
    If Mid(sCurrentLine, 1, 1) = "[" Then EndOfKey = True 'SI NOUVELLE CLE
    
    ' RECHERCHE DES BORNES DE LA VARIABLE
    i = 1
    Do While Mid(sCurrentLine, i, 1) <> "="
    i = i + 1
    Loop
    
    If Mid(sCurrentLine, 1, i - 1) = VarName Then
    VarFound = True
    End If
    
Loop

' SI FIN DE CLE ET TOUJOURS PAS DE VARIABLE TROUVEE
If EndOfKey And (Not VarFound) Then
RetrieveKey = vbNullString
Close #1
Exit Function
End If

sResult = Mid(sCurrentLine, i + 1, (Len(sCurrentLine) - i))

Close #1
RetrieveKey = sResult
End Function

Conclusion :


Y a aussi un ptit exemple que j'ai mis pour montrer comment il marche (c'est là ke vous avez besion des comdlg)

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.