Afin de faciliter l'utilisation de l'utilisateur et de rendre le système flexible, la plupart des applications Windows enregistrent les choix effectués par l'utilisateur et diverses informations système modifiées dans le fichier d'initialisation (INI). Par conséquent, lorsque l'environnement système change, le fichier INI peut être modifié directement sans modifier le programme. On peut voir que le fichier INI est crucial pour la fonctionnalité du système. Cet article explique comment lire et écrire des fichiers INI lors du développement d'applications Windows à l'aide de Visual Basic pour Windows (ci-après dénommé VB).
Le fichier INI est un fichier texte composé de plusieurs sections. Sous chaque titre entre crochets, se trouvent plusieurs mots-clés (keyWord) commençant par un seul mot et un signe égal. Chaque mot-clé contrôle un certain aspect de l'application. fonction, la valeur à droite du signe égal précise le mode de fonctionnement du mot-clé. Sa forme générale est la suivante :
[section1]
mot-clé1=valeur
mot-clé2=valeur2
…
[section2]
mot-clé1=valeur1
mot-clé2=valeur2
…
Parmi eux, s'il n'y a rien à droite du signe égal (c'est-à-dire que la valeur est vide), cela signifie que l'application Windows a spécifié une valeur par défaut pour le mot-clé si un mot-clé (ou une partie entière) l'est. introuvable dans tout le fichier , ce qui signifie également que des valeurs par défaut leur sont spécifiées. L'ordre dans lequel les parties apparaissent n'est pas pertinent, tout comme l'ordre des mots-clés dans chaque partie.
Il existe généralement deux manières de lire et d'écrire des fichiers INI : l'une consiste à les modifier avec "Notepad" sous Windows, ce qui est relativement simple et ne nécessite aucune description supplémentaire ; l'autre consiste à lire et à écrire des fichiers INI par une application Windows, généralement par le biais d'une application Windows. exécution de l'application Les informations du fichier INI sont lues à la sortie de l'application et certaines modifications apportées par l'utilisateur à l'environnement en cours d'exécution sont enregistrées à la sortie de l'application.
Le type de valeur des mots-clés est principalement une chaîne ou un entier et doit être lu et écrit dans deux situations. Afin de rendre le programme maintenable et portable, il est préférable d'encapsuler la lecture et l'écriture des fichiers INI dans un module (RWINI.BAS) et de construire les fonctions GetIniS et GetIniN ainsi que SetIniS et SetIniN dans RWI-NI.BAS. . Processus, vous devez utiliser les fonctions « GetPRivateprofileString », « GetPrivateProfileInt » et « WritePrivateProfileString » de l'API Windows dans ces fonctions et processus.
Le code programme du module RWINI.BAS est le suivant :
Déclarez les fonctions API Windows utilisées dans la section General-Declearation :
DeclareFunctionGetprivateprofileStringLib"Ker-nel"(ByVallpAppNameAsString, ByVallpKeyNameAsString, ByVallpDefaultAsString, ByVallpRetrm-StringAsString, ByValcbReturnStringAsInteger, ByValFilenameAsString)AsInteger
DeclareFunctionGetPrivatePfileIntLib"Kernel"(ByVallpAppNameAsString, ByVallpKeyNameAsString, ByVallpDefaultAsInteger, ByValFilenameAsString)AsInteger
DeclareFuncitonWritePrivateprofileStringLib"Kernel"(ByVallpapplicationNameAsString, ByVallpKeyNameAsString, ByVallpStringAsString, ByVallplFileNameAsString)AsInteger
FunctionGetIniS(ByValSectionNameAsString, ByValKeyWordAsString, ByValDefStringAsString)AsString
DimResultStringAsString*144,TempAsInteger
DimsAsString, iAsInteger
Temp=GetPrivateProfileString(SectionName,KeyWord,"",ResultString,144,AppProfileName())
'Récupérer la valeur du mot clé
IfTemp>0Then'la valeur du mot-clé n'est pas vide
s=""
Fori=1To144
SiAsc(Mid$(ResultString,I,1))=0Alors
QuitterPour
Autre
s=s&Mid$(ChaîneRésultat, I, 1)
FinSi
Suivant
Autre
Temp=WritePrivateProfilesString(nom de la section,KeyWord,DefString,ppProfileName())
'Écrire les valeurs par défaut dans le fichier INI
s=ChaîneDéf
FinSi
GetIniS=s
FinFonction
FunctionGetIniN (ByValSectionNameAsString, ByValKeyWordAsString, ByValDefValue
CommeIneger)AsInteger
DimdAsLong,sAsString
d=ValeurDéf
GetIniN=GetPrivateProfileInt(NomSection,
Mot clé, Valeur Def, ppProfileName ())
Ifd<>DefValueAlors
s=""&d
d=WritePrivateProfileString(NomSection,
Mot-clé,s,AppProfileName())
FinSi
FinFonction
SubSetIniS (ByValSectionNameAsString, BtVaKeyWordAsString, ByValValStr
CommeChaîne)
Dimres
res=WritePrivateprofileString(SectionName,KeyWord,ValStr,AppProfileName())
FinSub
SubSetIniN (ByValSectionNameAsString, ByValKeyWordAsString, ByValValInt
CommeEntier)
Dimres,s$
s$=Str$(ValInt)
res=WriteprivateProfileString(SectionName,KeyWord,s$,AppProfileName())
FinSub
SectionName est le titre de chaque section, KeyWord est le mot-clé, DefValue dans GetIniS et GetIniN est la valeur par défaut du mot-clé, et ValStr et ValInt dans SetIniS et SetIniN sont les valeurs du mot-clé à écrire dans le fichier INI. Afin de mieux illustrer comment utiliser les fonctions et procédures ci-dessus, deux exemples sont donnés ci-dessous.
Exemple 1 :
Le développement d'applications nécessite généralement l'utilisation de bases de données et d'autres fichiers. Les répertoires de ces fichiers (y compris les chemins et les noms de fichiers) ne doivent pas être fixés dans le programme, mais sont enregistrés dans des fichiers INI, qui sont lus à partir des fichiers INI lorsque le programme est exécuté. en cours d'exécution. Le code pour lire le fichier de base de données est le suivant :
DimDatabasenameAsString
Nom de la base de données=GetIniS("base de données", "employé", "")
IfDatabaseName=""ThenDatabaseName=InputBox("Veuillez saisir le répertoire de la base de données "Employé"),
App.Title)' peut également être sélectionné via la "boîte de dialogue Fichier".
SurErreurReprendreSuivant
Setdb = OpenDatabas (nom de la base de données)
SiErr<>0Alors
MsgBox "Échec de l'ouverture de la base de données !", MB-
ICONSTOP, App.Titre : GotoErrorProcessing
Autre
SetIniS"Base de données", "Employé", Nom de la base de données
FinSi
SurErreurGoTo0
…
Exemple 2 :
Afin de faciliter les opérations de l'utilisateur, il est parfois nécessaire de sauvegarder certaines informations de l'interface utilisateur, telles que la hauteur et la largeur de la fenêtre. Lors du chargement du formulaire, lisez la hauteur et la largeur du formulaire dans le fichier INI. Lors du déchargement du formulaire, stockez la hauteur et la largeur actuelles du formulaire dans le fichier INI. Le code est le suivant :
Sous-Formulaire1_Load()
…
Forml.Hauteur=GetIniN("Forme 1", "Hauteur", 6000)
Form1.Width=GetIniN("Form1","Hauteur",4500)
FinSub
…
Sous-Formulaire1_Unload()
…
SetIniN"Form1","Hauteur",Me.Hauteur
SetIniN"Form1,"Largeur",Me.Largeur
…
FinSub->