La plupart des applications ont besoin de conserver des données propres à leur configuration et à leur fonctionnement (des préférences comme la taille et la position de la fenêtre ou des paramètres de fonctionnement comme l’adresse IP et le numéro de port d’un serveur, …).
Pour ce type de fichier, les contraintes sont :
Parmi les formats les plus répandus, on trouve les fichiers INI.
Remarque : de plus en plus de logiciels utilisent le format XML (Extensible Markup Language) pour le format et l’échange de données (voir l’activité sur les fichiers XML).
Un fichier INI est un fichier de configuration dans un format de données introduit par les systèmes d’exploitation Windows en 1985. Par convention les noms de ces fichiers portent l’extension « .ini
».
L’utilisation de ce format de fichier s’est tout d’abord répandue parmi les logiciels qui fonctionnent sur Windows, puis plus tard sur des logiciels fonctionnant sur d’autres systèmes d’exploitation, tels que ceux de la famille Unix. Depuis l’apparition de la base de registre, Microsoft a beaucoup diminué l’utilisation de ce format pour ses propres logiciels.
Les fichiers INI sont des fichiers texte : ils peuvent donc être manipulés avec un éditeur de texte. Les fichiers sont divisés en sections. Chaque section comporte un certain nombre de paramètres de configuration. Chaque section commence par un titre placé entre crochets « [
» et « ]
».
La valeur de chaque paramètre de configuration est indiquée par une formule : paramètre = valeur. Les fichiers peuvent contenir des commentaires. Les commentaires sont souvent utilisés pour décrire les paramètres et les valeurs à introduire. Ils sont précédés d’un point-virgule (;
) ou plus rarement d’un dièse (#
).
Exemple de fichier INI :
; Last modified 15 July 2010 by Juan Dona
[owner]
name=juan dona
organization=cablage ideal
[database]
server=192.0.2.42 ; use IP address in case network name resolution is not working
port=143
file = "acme payroll.dat"
Qt fournit la classe QSettings
pour manipler les fichiers INI :
Être capable de lire et écrire dans un fichier INI des données de configuration.
On va créer une application GUI simple qui a besoin de données de connexion composée du couple adresse IP/numéro de port :
Ces données seront conservées dans le fichier INI fourni ci-dessous et qui portera le même nom que l’exécutable et sera situé dans le même dossier que celui-ci :
[connexion]
adresse="192.168.52.1"
port=80
Pour manipuler ces données dans le programme, on définira cette structure de données :
typedef struct
{
QString adresseIP;
int port;
} CONNEXION;
L’objectif est de lire ce fichier INI à la construction de la fenêtre pour initialiser l’affichage avec les données présentes. Puis, d’y écrire les données modifiées à la destruction de la fenêtre.
On vous fournit la méthode lireINI()
qu’il vous faudra tester :
bool MaFenetre::lireINI()
{
// Le nom du fichier INI : nom-executable.ini
QString fichierINI = qApp->applicationName() + ".ini";
if(estFichier(fichierINI))
{
QSettings parametres(fichierINI, QSettings::IniFormat);
// Lecture des paramètres de configuration
connexion.adresseIP=parametres.value("connexion/adresse","127.0.0.1").toString();
connexion.port=parametres.value("connexion/port", "0").toInt();
// Affichage de débugage
qDebug()<<QString::fromUtf8("adresse ip : %1").arg(connexion.adresseIP);
qDebug()<<QString::fromUtf8("port : %1").arg(connexion.port);
return true;
}
else
{
QMessageBox::critical(0,"Erreur !",("Impossible d'ouvrir le fichier "
+ fichierINI));
return false;
}
}
Code source fourni : activite-fichier-ini.zip
ecrireINI()
et tester l’enregistrement des données à la fermeture.