Attribute VB_Name = "FichierINI"
Option Explicit

'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 = "FichierIni.ini" 'Emplacement du fichier ini (a recuperer dans la base de registre)
Const gSize = 1024

'Enum permet de recuperer les nom de Section a l'appel de la fonction
Public Enum eSection
    T_Access
    T_Excel
    T_Texte
End Enum
Private Const PathFile = "\Config.ini"
'------------------------------------------------------------------------------
'Cette fonction lit dans les fichiers ini
'------------------------------------------------------------------------------
Public Function LectFile(ByVal Key As String, ByVal Section As eSection) 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 sSection As String 'La section du fichier à lire
Dim sFile As String 'Le fichier à lire
    
    sDefault = "Erreur"
'    strRetour = String$(gSize, 0) 'SUPER IMPORTANT sinon plante l'API et VB
    strRetour = Space(gSize)
    'Select qui transforme l'enum en string
    sSection = TransformeSection(Section)
    'Utilisation de l'API
    retour = GetPrivateProfileString(sSection, Key, sDefault, strRetour, gSize, App.Path & PathFile)
    LectFile = Left(Trim$(strRetour), Len(Trim$(strRetour)) - 1)
End Function
'------------------------------------------------------------------------------
'Cette fonction ecrit dans les fichiers ini
'------------------------------------------------------------------------------
Public Function EcritFile(ByVal Key As String, Section As eSection, ByVal sEcrit As String) As Long
Dim retour As Long
Dim sSection As String 'La section du fichier à lire
Dim sFile As String 'Le fichier à lire

    'Select qui transforme l'enum en string
    sSection = TransformeSection(Section)
    'Utilisation de l'API
    retour = WritePrivateProfileString(sSection, Key, sEcrit, App.Path & PathFile)
    EcritFile = retour
End Function
Function TransformeSection(Section As eSection) As String
    Select Case Section
        Case T_Access
            TransformeSection = "ACCESS"
        Case T_Excel
            TransformeSection = "EXCEL"
        Case T_Texte
            TransformeSection = "TEXTE"
    End Select
End Function


