Gestionnaire de fichiers de configuration

Description

J'ai remarqué lorsqu'une application assez conséquente était développée, que je passais un temps conséquent à écrire les procédures de lecture et d'enregistrement des fichiers de configuration.

Cette partie est pour moi l'une des moins intéressantes du projet car, d'un point de vue intellectuel, elle n'apporte absolument rien. Lassé de perdre mon temps, j'ai craqué lors de l'écriture d'un logiciel dont le nombre de fichiers de configuration était très important.

Je vous propose donc le fruit de mes réflexions.

L'idée est de représenter tous les paramètres d'une configuration sous la forme d'une arborescence d'objets. Chaque niveau de l'arborescence est représenté par un objet TConfiguration dans lequel il est également possible de stocker des paramètres.

Prenons un exemple de configuration.

Notre application fictive permet de transférer automatiquement le contenu de répertoires locaux vers un serveur en ftp. Nos informations de configuration seront les informations relatives à la connexion au serveur et l'arborescence à transférer.

-- configuration
+-- serveurftp
+-- arborescence
! +-- dossier
! +-- dossier
+-- options

On positionnera dans l'objet serveurftp, l'adresseip, le nom du compte, le mot de passe (qui sera crypté dans le fichier), le numéro de port et le répertoire par défaut.

L'objet arborescence contiendra quant à elle la liste des dossiers à transférer. Chaque dossier étant lui-même un objet qui pourra contenir des paramètres.

Le dernier objet sera les options avec par exemple comme paramètre le nom du journal de traces.

Cet exemple se traduirait comme suit en Delphi :

uses TSxConfiguration;

...

var Configuration, ServeurFtp, Arborescence, Options: TSxConfiguration;

...

// Création de l'objet principal
Configuration := TSxConfiguration.Create;
Configuration.PrivateKey := 'delphifr';

// Création de l'objet serveur et inscription des paramètres
ServeurFtp := TSxConfiguration.Create(Configration);
ServeurFtp.Name := 'serveurftp';
ServeurFtp.addValue('adresse','198.162.0.1');
ServeurFtp.addValue('compte','admin');
ServeurFtp.addValue('motdepasse','tordu',true);
ServeurFtp.addValue('port',21);
...

// Création de l'arborescence et de la liste des dossiers
Arborescence := TSxConfiguration.Create(Configration);
Arborescence.Name := 'arborescence';
for ...
with TSxConfiguration.Create(Arborescence) do addValue('dossier', ...);

// Création de l'objet options et inscription des paramètres
Options := TSxConfiguration.Create(Configration);
Options.Name := 'options';
Options.addValue('traces',true);
Options.addValue('journal','C:\Mon soft\log\journal.txt');

// Et la cerise sur le gâteau : la sauvegarde
Configuration.SaveToFile('C:\Mon soft\cfg\configuration.cfg');

Le code permettant la relecture du fichier de configuration est le suivant.

// Création de l'objet principal
Configuration := TSxConfiguration.Create;

// Lecture du fichier de configuration
Configuration.LoadFromToFile('C:\Mon soft\cfg\configuration.cfg');

// Extrait les objets
ServeurFtp := Configuration.Search('serveurftp');
Arborescence := Configuration.Search('arborescence');
Options := Configuration.Search('options');

Pour réaliser cet exemple, seule l'unité Configuration.pas est nécessaire. Tous les détails concernant cette unité sont indiqués dans l'entête.

La seconde partie du projet que je vous fais partager est un browser de configuration appelé TExplorateur. Il permet de représenter la configuration au travers d'un treeview et surtout de la manipuler.

Consultez également l'entête du fichier qui vous en apprendra beaucoup plus.

Enfin pour terminer, j'ai réalisé un Gestionnaire de Fichiers de Configuration capable de créer et de relire tous vos fichiers de configuration. Il est livré à titre indicatif.

Codes Sources

A voir également

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.