Ce tutorial présente :
- les API windows utilisées pour lire et écrire dans des fichiers INI
- La structure des fichiers INI
- L'utilisation dans le code de la lecture et l'écriture dans ces fichiers.
Je me suis inspiré des codes sources présents sur le site.
N'hésitez pas à laisser vos remarques.
Merci
En jargon informatique, un fichier INI désigne un fichier de configuration dans un format introduit par les systèmes d'exploitation Windows. Par convention les noms de ces fichiers portent l'extension «.ini».
Les deux fonctions que nous allons utiliser sont GetPrivateProfileString et WritePrivateProfilString.
Dans un module vb6, on va placer ce code :
' '-- Déclaration des fonctions API Private Declare Function GetPrivateProfileString Lib "kernel32" _ Alias "GetPrivateProfileStringA" _ (ByVal lpApplicationName As String, _ ByVal lpKeyName AsAny, _ ByVal lpDefault AsString, _ ByVal lpReturnedString AsString, _ ByVal nSize AsLong, _ ByVal lpFileName AsString) AsLong Private Declare Function WritePrivateProfileString Lib "kernel32" _ Alias "WritePrivateProfileStringA" _ (ByVal lpApplicationName AsString, _ ByVal lpKeyName AsAny, _ ByVal lpString AsAny, _ ByVal lpFileName As String) AsLong '*************************************************************************** '* Fonction permettant l'écriture dans un fichier INI '*************************************************************************** Public Function EcritDansFichierIni(section As String, _ Cle As String, _ Valeur As String, _ Fichier As String) As Long EcritDansFichierIni = WritePrivateProfileString(section, Cle, Valeur, Fichier) End Function '*************************************************************************** '* Fonction permettant la lecture dans un fichier INI '*************************************************************************** Public Function LitDansFichierIni(section As String, _ Cle As String, _ Fichier As String, _ Optional ValeurParDefaut As String = "") As String Dim strReturn As String strReturn = String(255, 0) GetPrivateProfileString section, Cle, ValeurParDefaut, strReturn, Len(strReturn), Fichier LitDansFichierIni = Left(strReturn, InStr(strReturn, Chr(0)) - 1) End Function
Remarque : Dans la fonction de lecture on ajoute en option une valeur par défaut égale à 0. Cela permet d'avoir quand même une valeur même si le programme n'a pas su lire le fichier ini.
Il suffit de prendre un éditeur de texte quelconque, notepad par exemple.
Vous devez organiser votre fichier de cette manière :
[Section]
cle=valeur
Ici par exemple je vais créer 3 sections contenant chacune 2-3-7 clé ayant des valeurs différentes :
[MESSAGES]
MessageInfo = Super j'ai su lire mon fichier ini
Titre = Lecture / Ecriture fichier ini
[ANGLAIS]
mnu_Fichier = &File
mnu_Enrg = &Save
mnu_Imprim = &Print
[SOMMES]
Depense = 1000
Entree = 50
Sortie = 87
StockLimiteBas = 5
StockLimiteHaut = 12
Alerte = Attention la limite haute est atteinte
SoldeInitial = 7844630
Ce fichier il faut l'enregistrer en modifiant l'extension par .ini
Ici pour notre exemple on va supposer que notre fichier ini a été enregistré dans le répertoire de l'application et que nous l'avons nommé « iniSetup ». Si vous enregistrer votre fichier ailleurs vous devez soit faire la recherche de ce fichier sur votre disque, soit le saisir en dur dans votre code. La deuxième option étant moins propre.
Pour utiliser le code placé dans le module vous devez utiliser les lignes suivantes :
- Lecture
' `-- Déclaration de variables Dim chemin as string Dim messageMsgBox as string Dim titreMsgBox as string `-- Initialisation des variables et appel des fonctions API chemin = App.Path & "\inisetup.ini" messageMsgBox = LitDansFichierIni("MESSAGES", "MessageInfo", Chemin, "Erreur") titreMsgBox = LitDansFichierIni("MESSAGES", "Titre", Chemin, "Erreur") msgbox messageMsgBox,vbInformation,titreMsgBox
- Ecriture
' `-- Déclaration de variables Dim chemin as string '-- Mise à jour du fichier ini EcritDansFichierIni "SOMMES", "Sortie", 74, chemin
Vous pouvez vérifier en ouvrant votre fichier ini que la valeur de Sortie à bien été modifiée