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 :

[Novice] Utiliser des fichiers configuration


Sujet :

C++

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 31
    Points : 20
    Points
    20
    Par défaut [Novice] Utiliser des fichiers configuration
    Bonjour,

    Je suis ce qu'on peut appeler un débutant en C++ et j'aurais besoin de conseils éclairés sur une application que je dois réaliser.

    J'ai un programme C++ (Win32) qui a pour but d'envoyer différentes commandes basiques à Windows à base de : mouse_event(), kbd_event().
    Ces commandes à envoyer doivent pouvoir être paramétrées par un utilisateur, ceci indépendamment de l'application. Ca veut dire que les paramètres de mes fonctions kbd_event() doivent pouvoir varier.
    L'idée serait d'utiliser un fichier de configuration externe. Fichier qui serait "consulté" par l'application pour savoir quelle commande utiliser dans tel cas. Selon vous, pour un noobie, quel type de fichier de configuration serait le plus facile à utiliser avec C++ ?
    Dans mes configuration je dois stocker une association du type :

    Cas 1 -> Action X (VK_machin...)
    Cas 2 -> Action Y
    Cas 3 -> Action Z ...

    - Du XML ? (ça permettrait une certaine normalisation)
    - Un .ini ou je ne sais quoi ? (j'avoue ne pas savoir grand chose sur les .ini)
    - ...

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    J'oserais, je dirai que la complexité de mise en oeuvre entre .ini et .xml est similaire, donc tu peux choisir ce que tu veux.

    Mon choix personnel : XML
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Bon j'avoue ne pas avoir encore cherché, mais j'imagine qu'il existe une bibliothèque idéale pour charger un fichier XML et parcourir les noeuds ? Je cherche vraiment le plus simple, le C++ ça m'effraie déjà assez comme ça ^^.

    Edit : Bon bah tinyxml à l'air idéal pour ce que j'ai à faire.

  4. #4
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Par contre j'ai une autre vraie question... Je travaille (légalement) sous Visual Studio 2008 et je ne le maitrise pas mieux que le C++.
    J'ai téléchargé tinyxml, j'ai des sources et des tas de fichiers sympas... Comment je fais pour intégrer les fonctionnalités de tinyxml à mon projet en cours ?

    Doit bien y avoir un meilleur moyen que de copier/coller à la main les sources dans mon projet ? =)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 48
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par Syrus Voir le message
    - Un .ini ou je ne sais quoi ? (j'avoue ne pas savoir grand chose sur les .ini)
    - ...
    Salut, je te donne le lien pour la définition du fichier .ini

    http://fr.wikipedia.org/wiki/Fichier_INI

    Moi ce que je retiens pour utiliser le fichier Ini. c'est de récupérer une valeur d'une variable dans une [section]

    Voici un exemple de fichier que tu a pu voir dans le liens en dessus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [section1]
    ; Ceci est un commentaire dans une section vide
    [section2]
    ; Cette section définit la valeur de var1 et var2
    var1 = abc
    var2 = 123
    [section3]
    ; Des variables portant le même nom peuvent exister si elles se trouvent dans une autre section
    var1 = def
    var2 = 456
    Sous Windows avec VC++ 6 en utilisant MFC

    GetPrivateProfileStringA(Key1,Key2,DefaultStr,pBuffer);
    Key1 est la [section]
    Key2 est la variable
    DefaultStr est la valeur par défaut si section ou variable non trouvé
    pBuffer est la valeur de retour

    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    GetPrivateProfileStringA(section3,var1 ,"pas trouvé",pBuffer1);
    cout << "pBuffer1 : " << pBuffer1 ;
    GetPrivateProfileStringA(section3,var2 ,"pas trouvé",pBuffer2);
    cout << "pBuffer2 : " << pBuffer2 ;
    GetPrivateProfileStringA(section3,var3 ,"pas trouvé",pBuffer3);
    cout << "pBuffer3 : " << pBuffe3r ;
    Tu as pBuffer1 est égale à def.
    Tu as pBuffer2 est égale à 456.
    Tu as pBuffer3 est égale à "pas trouvé".


    Sous Linux tu peux utiliser un paser pour utiliser le fichier .ini

    Voici le liens

    http://ndevilla.free.fr/iniparser/

    Tous est expliqué dans Oxygène du répertoire HTLM

  6. #6
    Membre à l'essai
    Inscrit en
    Novembre 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Merci beaucoup pour vos réponses.

    Je me suis lancé en XML (qui correspond mieux à mes besoins) et j'ai même utilisé avec succès TinyXML. Le plus dur fut de comprends comment l'intégrer à mon projet VC++ .
    J'ai maintenant une autre question plus délicate à mon niveau :

    Les données lues dans mon fichier XML, je veux en faire des paramètres pour des fonctions comme mouse_event() et keybd_event().
    Comment faire pour que ma donnée textuelle "MOUSEEVENTF_LEFTUP" soit utilisée comme un DWORD par mon programme ?
    J'entend qqc de plus flexible que des conditionnelles pour chaque cas possible... Parce que dans le cas d'événements clavier, je ne vais pas faire une conditionnelle par code virtuel quand même ?

  7. #7
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par Syrus Voir le message
    Parce que dans le cas d'événements clavier, je ne vais pas faire une conditionnelle par code virtuel quand même ?
    Et pourtant !!

    Le code est incapable de savoir que "VK_F1" vaut 129 (j'invente la valeur mais c'est un exmple)
    Quelque part, il faudra une table de correspondance entre la string "VK_F1" et la valeur 129.

    Maintenant, cette table poeut être dans le code (en dur) ou encore dans ton fichier XML (pourquoi pas ?)
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/08/2009, 18h58
  2. Est-il possible d'utiliser des fichiers xsl en cascade ?
    Par Faekk dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 22/08/2005, 12h34
  3. Copie de 2 bases SQLserver en utilisant des fichiers
    Par dimdidi dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/08/2005, 09h26
  4. [NASM] Utiliser des fichiers ressources
    Par trax44 dans le forum Assembleur
    Réponses: 8
    Dernier message: 26/09/2004, 18h42

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