Lecture/ecriture d'un fichier ini

0/5 (6 avis)

Snippet vu 14 453 fois - Téléchargée 75 fois

Contenu du snippet

Permet de sauvegarde les parametres d'un logiciel facilement.L'utilisateur final peut les voir et les modifier (à ces risques et périls).
Attention,modifier le chemin du fichier ini dans les declarations.

Source / Exemple :


'Ce module lit et ecrit dans un fichier ini
'---------------------------------------------------------------
' declaration des API de PrivateProfile
'---------------------------------------------------------------
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
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

'-------------------------------------------
'Const pour la lecture des fichiers ini
'-------------------------------------------
Const gNomFichier = "C:\testFichierIni.ini" 'Emplacement du fichier ini (a recuperer dans la base de registre)
Const gSection = "\MaSection"      'nom de la section entre crochet
Const gSize = 1024

'Enum permet de recuperer les nom de key a l'appel de la fonction
Public Enum eKey
    MaTable
    MesScores
    mesJoueurs
End Enum

Private Const bDebug = False

'------------------------------------------------------------------------------
'Cette fonction lit dans les fichiers ini
'------------------------------------------------------------------------------
Public Function Lecture(ByVal Key As eKey) As String

Dim retour As Long  'retour de la fonction API : gere ces erreurs
Dim sDefault As String  'Phrase de retour par default
Dim strRetour As String 'la réponse de l'API
Dim sKey As String

    sDefault = "Erreur WolfKiller ;-)"
    strRetour = String$(gSize, 0) 'SUPER IMPORTANT sinon plante l'API et VB
    
    'Select qui transforme l'enum en string
    'Enum permet de recuperer les nom de key a l'appel de la fonction
    Select Case Key
        Case MaTable
            sKey = "MaTable"
        Case MesScores
            sKey = "MesScores"
        Case mesJoueurs
            sKey = "MesJoueurs"
    End Select
    'Utilisation de l'API
    retour = GetPrivateProfileString(gSection, sKey, sDefault, strRetour, gSize, gNomFichier)
        If bDebug Then MsgBox ("Retour : " + strRetour)
    Lecture = strRetour
End Function
'------------------------------------------------------------------------------
'Cette fonction ecrit dans les fichiers ini
'------------------------------------------------------------------------------
Public Function Ecriture(ByVal Key As eKey, ByVal sEcrit As String) As Long
Dim retour As Long
Dim sKey As String

'Select qui transforme l'enum en string
'Enum permet de recuperer les nom de key a l'appel de la fonction
Select Case Key
    Case MaTable
        sKey = "MaTable"
    Case MesScores
        sKey = "MesScores"
    Case mesJoueurs
        sKey = "MesJoueurs"
End Select

    'Utilisation de l'API
    retour = WritePrivateProfileString(gSection, sKey, sEcrit, gNomFichier)
        If bDebug Then MsgBox ("Ecriture effectuée ")
    Ecriture = retour
End Function

Conclusion :


Utilisez une form avec un textbox et 2 Command Et ce petit morceau de code pour tester le code du module
Public Enum bBouton
Lecture = 0
Ecriture = 1
End Enum
Private Sub Command1_Click(Index As Integer)
Select Case Index
Case Lecture
Text1.Text = modFichierIni.Lecture(MaTable)
Case Ecriture
modFichierIni.Ecriture (MaTable), Text1.Text
End Select
End Sub

A voir également

Ajouter un commentaire Commentaires
cs_Commissaire Messages postés 1 Date d'inscription vendredi 9 juillet 2004 Statut Membre Dernière intervention 12 septembre 2006
12 sept. 2006 à 16:35
Merci pr ce code qui m'a sauvé la vie.
Patrio LEBVOUA From Congo-Bzv
XelectroX Messages postés 209 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 6 novembre 2009
19 mai 2006 à 18:48
Super ton code
Je l'ai remodifier à ma manière mais il est vraiment interressant.
Bonne continuation.
warreng69 Messages postés 12 Date d'inscription jeudi 21 novembre 2002 Statut Membre Dernière intervention 13 avril 2004
8 déc. 2002 à 19:31
Votre code est tres bien.
je voudrai juste demander si kelk un possederai une source avec une fonction de lecture d'un fichier ini avec seulement le nom du fichier en parametres.
merci
et je souhaiterai egalement savoir comment le fichier ini peut etre lu (chargé) par une application.
pour ma part je prefere ce moyen là:
en creant un module contenant:
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

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

Function LireINI(Entete As String, Variable As String) As String
Dim Retour As String
Fichier = App.Path & "" & App.EXEName & ".ini"
Retour = String(255, Chr(0))
LireINI = Left$(Retour, GetPrivateProfileString(Entete, ByVal Variable, "", Retour, Len(Retour), Fichier))
End Function

Function EcrireINI(Entete As String, Variable As String, Valeur As String) As String
Fichier = App.Path & "" & App.EXEName & ".ini"
WriteINI = WritePrivateProfileString(Entete, Variable, Valeur, Fichier)
End Function

' Pour l'executer ex :
'nommodule.EcrireINI"MonEntete", "MaVariable", "MaValeur"
nommodule.LireINI "MonEntete", "MaVariable"
on aimerai bien un zip sur ce code .... c du bon code

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.