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

  1. #1
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    février 2008
    Messages
    2 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : février 2008
    Messages : 2 068
    Points : 4 000
    Points
    4 000
    Billets dans le blog
    4

    Par défaut [Glib] parser plusieurs arguments

    Bonjour à toutes et à tous.

    Je viens vers vous pour un petit souci d'utilisation de GOptionContext*.

    Je désire parser la ligne de commande dont certaines options attentent plusieurs arguments. J'ai donc déclaré entre autres options ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    static gchar **context_viewport = NULL;
    ...
    Puis, dans le GOption Entry :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    static GOptionEntry entries[] =
        {
          ...
          {"viewport", 0, 0, G_OPTION_ARG_CALLBACK, (GOptionArgFunc*)callback_viewport, "Set the viewport for the current graph", "xmin ymin xmax ymax"},
           {NULL}
        };
    J'ai initialisé tout ce petit monde comme ceci :
    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
    #ifdef G_OS_WIN32
      args = g_win32_get_command_line ();
    #else
      args = g_strdupv (argv);
    #endif
     
      context = g_option_context_new ("");
      g_option_context_add_main_entries (context, entries, NULL); 
      g_option_context_add_group (context, gtk_get_option_group (TRUE));
      if (!g_option_context_parse_strv (context, &args, &error))
        {
          g_printerr ("option parsing failed: %s\n", error->message);
          g_error_free (error);
          g_strfreev (args);
          exit (1);
        }
      g_strfreev (args);
    Pour finir voici le callback associé à "--viewport" :
    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
    static gboolean
    callback_viewport (const gchar *option_name, const gchar *value, gpointer data, GError **error)
    {
      if (*error)
        {
          g_printerr ("callback viewport error : %s\n", (*error)->message);
          g_error_free (*error);
     
          return FALSE;
        }
     
      g_printerr ("callback viewport : %s, %s\n", option_name, value);
     
      return TRUE;
    }
    Tout fonctionne correctement sauf que je désire, comme vous pouvez le voir dans la description des arguments à transmettre à "--viewport" quatre arguments. Si j'écris ceci en ligne de commande je n'obtiens que le premier argument.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ./test --viewport 12 34 56 78
     
    callback viewport : --viewport, 12
    Comment faire pour récupérer tout ce petit monde ?

    En vous remerciant par avance,

    Gérald
    Utilisation de Glade avec Gtk+ - N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk

  2. #2
    Membre confirmé Avatar de Gaulouis
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    octobre 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : octobre 2015
    Messages : 222
    Points : 455
    Points
    455

    Par défaut

    Bonjour,

    Peut être en utilisant l'option G_OPTION_REMAINING( que je ne conseil pas)

    Ou bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./test --viewport="12 34 56 78"
    A+

Discussions similaires

  1. Parser un argument de commande en plusieurs
    Par Aiglon13 dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 14/05/2012, 12h50
  2. [XML][Java] parser plusieurs fichiers en un seul arbre DOM ?
    Par mrlenul dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 29/11/2005, 11h09
  3. [Apis]parser les arguments d'un programme Java
    Par sacofan dans le forum APIs
    Réponses: 4
    Dernier message: 06/08/2005, 14h32
  4. Réponses: 8
    Dernier message: 30/05/2005, 13h55
  5. [debutant] [main] plusieurs arguments
    Par naive dude dans le forum Langage
    Réponses: 9
    Dernier message: 28/09/2004, 09h20

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