IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Fichier de configuration


Sujet :

C++

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Août 2010
    Messages : 86
    Par défaut Fichier de configuration
    Bonjour,
    Dans le cadre d'un projet, mon groupe et moi même avons écrit un programme permettant d'effectuer des calculs. Ce programme est un serveur qui reçoit ses requêtes par sockets. Les résultats sont ensuites enregistrés dans une base de donnée (MySQL).
    Le programme fonctionne mais je ne possède pas de fichier de configuration pour pouvoir le paramétrer.
    Je prefère un fichier plutôt que des arguments passés en ligne de commande.
    J'aimerais pourvoir écrire écrire un fichier de configurationpour spécifier par exemple le nombre d'utilisateurs maximum, l'adresse du serveur MySQL etc...
    Je sais que avec Boost c'est possible, j'ai regardé la doc mais je suis un peu perdu.
    J'ai aussi entendu parler de TinyXML, mais je veux le truc le plus simple possible.
    Quelqu'un a-t-il déjà fait ça ?

    Merci.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 060
    Billets dans le blog
    142
    Par défaut
    Bonjour,

    Il y a plusieurs façons de garder des variables de configuration. Intéressons nous aux fichiers. Il faut choisir un format de fichier. J'oserai dire que si boost a déjà un truc tout prêt et que vous utilisez boost, alors n'hésitez pas à prendre celui-là.
    Qt aussi à son propre système (le QSettings) ... mais j'imagine que cela ne vous intéresse pas (sauf si vous utilisez Qt :p)
    On peut tout faire à la main ... ce que je déconseille si boost propose quelque chose (autant ne pas réinventer la roue).
    Sinon, à la main, et en XML (qui est un format de fichier) tinyXML nous facilitera la lecture / écriture de celui-ci.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Août 2010
    Messages : 86
    Par défaut
    Oui on utilise boost.
    Mais ce que je disais c'est que les howto sont pas clair, enfin pour moi.
    Quelqu'un a-t-il déjà utilisé boost pour faire un fichier de conf ?

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    J'ai déjà utilisé boost::program_options. Ça fonctionne, mais comme d'habitude avec boost c'est mal documenté et il faut reprogrammer soi-même une sur-couche pour que l'utilisation ne soit pas trop dégueulasse.

    Si tes fichiers de config sont en .ini, il existe cette petite classe très sympathique et très pratique : CIniFile.

  5. #5
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    Citation Envoyé par cob59 Voir le message
    J'ai déjà utilisé boost::program_options. Ça fonctionne, mais comme d'habitude avec boost c'est mal documenté et il faut reprogrammer soi-même une sur-couche pour que l'utilisation ne soit pas trop dégueulasse.
    c'est open source, patches welcome les mecs ...

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    Par défaut
    Salut,

    Il ne faut pas oublier non plus que Apache et MySql ont tous deux leurs propres fichiers de configuration...

    Si ton serveur est dédié à la tâche, tu pourrais, peut etre, commencer par configurer correctement ceux-ci, en modifiant directement les fichiers ad-hoc
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Août 2010
    Messages : 86
    Par défaut
    Ok merci à tous.
    Je vais me débrouiller :-)

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Citation Envoyé par cob59 Voir le message
    mais comme d'habitude avec boost c'est mal documenté
    Je ne suis franchement pas d'accord, en plus boost::program_options est très bien fait !

    Sinon pour l'écriture d'un fichier de conf, tout dépend de la complexité que tu veux. Mais souvent un fichier XML est trop bourrin, un simple fichier texte avec de couples clés/valeur séparés par un signe égal, un double point ou n'importe quoi d'autre fait l'affaire et est facile à parser.

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Août 2010
    Messages : 86
    Par défaut
    Concrètement j'aurais besoin de ça comme fichier de configuration :

    MYSQLSERVER="adresseip"
    MAXUSER=nombreMaxUtilisateurs
    PORT=numeroPort

    J'ai besoin de rien de plus.

    Merci pour vos conseil, je vais regarder boost ce soir.

  10. #10
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Si tu as boost sous la main, tu peux utiliser boost::split, mais sinon ce simple code fait l'affaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #include <string>
    #include <fstream>
    #include <iostream>
    #include <map>
     
    int main()
    {
        std::ifstream fichier( "config.txt" );
        std::map< std::string, std::string > configuration;
        if ( fichier )
        {
            std::string cle;
    	std::string valeur;
            while ( std::getline(fichier, cle,'=') && std::getline(fichier, valeur))
    		configuration[cle] = valeur;	
        }
     
    	// Lire les valeurs
    	std::cout << configuration["MYSQLSERVER"] << std::endl;
    	std::cout << configuration["MAXUSER"] << std::endl;
    	std::cout << configuration["PORT"] << std::endl;
    }
    Tant que le fichier de config n'est pas à remplir par un utilisateur à qui il faut donner des messages d'erreurs, etc, ça suffit amplement.

  11. #11
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Août 2010
    Messages : 86
    Par défaut
    Merci bien pour l'bout de code.
    Bah l'utilisateur doit le remplir... Mais bon, si dans la doc j'explique bien tout, ça devrait aller, c'est pas appli de prod, c'est pour un ptit projet de moins de 10 personnes.
    Ca tourne nickel merci.
    Merci encore !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Fichier de configuration
    Par Xavinou dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 26/09/2005, 23h02
  2. Réponses: 4
    Dernier message: 09/09/2005, 12h59
  3. [Log4j] fichier de configuration ou XML ?
    Par nabilblk dans le forum Logging
    Réponses: 2
    Dernier message: 02/09/2005, 16h42
  4. [langage] Lire un fichier de configuration
    Par bobinoo dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2004, 15h53
  5. Les fichiers de configuration de comptes avec Samba
    Par tomnie dans le forum Réseau
    Réponses: 4
    Dernier message: 18/03/2004, 08h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo