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

Algorithmes et structures de données Discussion :

Gestion des options / switch d'un executable


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut Gestion des options / switch d'un executable
    Salut les amis !

    J'espère être au bon endroit pour poser ma question et que je vais réussir à être clair...

    Lorsque vous créer un script ou un executable qui sera lancé en ligne de commande avec des options / switchs style :

    mon_exe.exe filename.ext /A /B /C /D /E

    Comment gérez vous les différents cas de traitements de ces options qui parfois peuvent carrément être incompatibles ou mises dans le désordre?

    En effet certains vont lancer l'appli de cette façon :

    mon_exe.exe filename.ext /D /A

    D'autre de celle manière là :

    mon_exe.exe filename.ext /A /D

    Ou encore :

    mon_exe.exe filename.ext /A /B => avec /A et /B incompatibles

    Comment gérez vous tous ces cas? je suppose qu'il existe quelque part un algo simple qui répond à ma question, mais quel est il ?

  2. #2
    Membre émérite
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Par défaut
    Il n'y a pas de méthode magique.
    Si pour toi, l'ordre des options n'a pas d'importance, tu peux simplement déclarer une variable par option acceptée et les initialiser à 0. Puis parcourir toutes les options données à ton programmes et mettre la variable correspondant à 1.

    Une fois que tu as la liste de toutes les options qui ont été données à ton programme, tu n'as plus qu'à vérifier que des options incompatibles n'ont pas été données. Là, pas de méthode magique, il faut que tu liste tous les cas d'options incompatibles. Et si tu trouve que la combinaison d'options données est incohérente : message d'erreur et arrêt du programme.

  3. #3
    Membre Expert
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Par défaut
    J'ai toujours eu ce problème. Toujours. À chaque fois que j'écris un petit programme/script, je me retrouve à devoir choisir entre passer 2h à gérer les arguments de manière user-friendly ou faire un truc basique quitte à devoir modifier selon le besoin.

    Et moi qui code sous linux, je m'étonne toujours de ne pas avoir trouvé d'outil déjà fait qui permette une gestion intelligente des arguments. Il faut réinventer la roue à chaque fois !

    Une alternative : lorsque je le peux et lorsque c'est pertinent, je code en OCaml. Il y a un module tout fait (un genre de stl) qui gère ça de manière vraiment adéquate. Je me suis déjà retrouvé à coder l'interface en ligne de commande en OCaml et le cœur du programme dans un autre langage.

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    On peut toujours décrire la grammaire sous forme BNF et code un verificateur. Mais ca me semble un peu lourd.

    Pour ma part, je préfère définir les caractéristiques de chaque argument et les vérifier un par un.
    Argument {
      alias = "lettre ou mot"
      withArgument = yes/no
      mandatory = yes/no
      requires = { list of other Argument }
      forbids = { list of other Argument }
    }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre émérite
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Par défaut
    C'est vrai qu'il y a aussi les lib à la getopt.
    Ça simplifie un peu le parsing, mais je ne connais aucune lib qui soit capable de gérer l'exclusion mutuelle des options.

  6. #6
    Membre Expert
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Par défaut
    C'est un truc à coder ça. Le soucis c'est que c'est extrêmement langage-dépendant.

Discussions similaires

  1. [MySQL] Gestion des options
    Par Heirem dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/11/2011, 15h14
  2. Gestion des options de la ligne de commande
    Par gl dans le forum Télécharger
    Réponses: 0
    Dernier message: 30/11/2010, 17h38
  3. Gestion des options
    Par vikki dans le forum Qt
    Réponses: 4
    Dernier message: 12/02/2010, 22h14
  4. Réseau d'entreprise : Gestion des n° sur les switch
    Par snoopy69 dans le forum Windows XP
    Réponses: 1
    Dernier message: 24/04/2007, 11h16
  5. Réponses: 6
    Dernier message: 05/10/2005, 14h22

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