Unexpected parameter

Fermé
jj590 - 26 déc. 2013 à 08:57
Bonjour,

Je travaille en c++ avec visual studio...

Voici le code que j'utilise (c'est du code classique d'en tête de fichier):

// ****** Constantes statiques de la ligne de commande ********
static const wxCmdLineEntryDesc g_cmdLineDesc [] =
{
{ wxCMD_LINE_SWITCH, "a", "aide", "Affiche l'aide de la ligne de commande", wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP },
{ wxCMD_LINE_SWITCH, "d", "debug", "Affiche les messages de debug", wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL },
{ wxCMD_LINE_SWITCH, "s", "secondaire", "Passe en mode de programme secondaire pour XXXXXX", wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL },
{ wxCMD_LINE_SWITCH, "1", "t1", "Utilise la détection des mains (mode1)", wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL },
{ wxCMD_LINE_SWITCH, "2", "t2", "Utilise la détection des mains (mode2)", wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL },
{ wxCMD_LINE_SWITCH, "b", "absolu", "Passe la souris en mouvement absolu plutot que relatif", wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL },

{ wxCMD_LINE_SWITCH, "w", "width", "Largeur de la zone de prise en compte du pointage absolu.", wxCMD_LINE_VAL_STRING , wxCMD_LINE_PARAM_OPTIONAL },
{ wxCMD_LINE_SWITCH, "h", "height", "Hauteur de la zone de prise en compte du pointage absolu.", wxCMD_LINE_VAL_STRING , wxCMD_LINE_PARAM_OPTIONAL },
{ wxCMD_LINE_SWITCH, "x", "ofsetX", "Décalage X de la zone de prise en compte du pointage absolu.", wxCMD_LINE_VAL_STRING , wxCMD_LINE_PARAM_OPTIONAL },
{ wxCMD_LINE_SWITCH, "y", "ofsetY", "Décalage Y de la zone de prise en compte du pointage absolu.", wxCMD_LINE_VAL_STRING , wxCMD_LINE_PARAM_OPTIONAL },


{ wxCMD_LINE_NONE }


};


void mon_app::OnInitCmdLine(wxCmdLineParser& parser)
{
parser.SetDesc (g_cmdLineDesc);
// refuse '/' comme paramètre de démarrage et ne peut utiliser des / comme des chemins... (type /path)
parser.SetSwitchChars (wxT("-"));
}
bool mon_app::OnCmdLineParsed(wxCmdLineParser& parser)
{

if (parser.Found(wxT("s")) || parser.Found(wxT("secondaire")))
CurrentVersion=true;
else
CurrentVersion=false;

// utilise la partie du coprs en fonction de l'entrée t1 ou t2
current_part_of_person = 0;
if (parser.Found(wxT("1")) || parser.Found(wxT("t1"))) current_part_of_person = 1;
if (parser.Found(wxT("2")) || parser.Found(wxT("t2"))) current_part_of_person = 2;

if (parser.Found(wxT("b")) || parser.Found(wxT("absolu"))) N_absolu=true;

// récupères les paramètres avec données
wxString sName=_T("");

if (parser.Found(_T("w"),&sName) || parser.Found(_T("width"),&sName)) N_abs_width= wxAtoi(sName);
if (parser.Found(_T("h"),&sName) || parser.Found(_T("height"),&sName)) N_abs_height=wxAtoi(sName);
if (parser.Found(_T("x"),&sName) || parser.Found(_T("ofsetX"),&sName)) N_ofsetx=wxAtoi(sName);
if (parser.Found(_T("y"),&sName) || parser.Found(_T("ofsetY"),&sName)) N_ofsety=wxAtoi(sName);

if (parser.Found(wxT("d"))) {
// passe en mode debug
slog_set_priority (SLOG_PRIO_DEBUG);
#if defined(WIN32)
AllocConsole();
freopen("CONOUT$", "wb", stdout);
slog_write (SLOG_PRIO_INFO, "mode debug en cours");
#endif
}

return true;
}



Jusque là rien de particulier car visiblement le code fonctionne.

lorsque je passe un argument simple dans la ligne de commande ( "mon_appli.exe -s" par exemple) l'argument est bien pris en compte, si j'y ajoute un paramètre avec une valeur derrière ( "mon_appli.exe -x 800" par exemple) j'obtient systématiquement "unexpected parameter '800'".

C'est certainement un truc à la c**n mais je cale sur l'envoi de ce paramètre. Sachant que ca ne vient pas du débugger, car sur le raccourci de l'exe j'ai le même souci.

Merci pour tout aide ou suggestion.