Récupération paramètre entrée dans une application win32

Résolu
cs_chuckboy Messages postés 64 Date d'inscription vendredi 16 septembre 2005 Statut Membre Dernière intervention 31 mars 2009 - 17 oct. 2005 à 19:44
SMarmotte Messages postés 53 Date d'inscription vendredi 17 janvier 2003 Statut Membre Dernière intervention 12 novembre 2005 - 17 oct. 2005 à 20:52
Bonjour

La question est simple , en mode console j'y arrive facilement mais la j'ai vraiment un probleme

Argument : -ut1 ou -ut2 (marche impecable)
Argument -d c:\toto (il me garde uniquement mon c: pkoi ???)

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPSTR lpCmdLine, int nCmdShow)
{


unsigned int i;
std::string sRepertory;


int j=0;
// Parse the command line to find automated unit repertory request
for(i = 0; i < strlen(lpCmdLine); i++)
{
if(!strncmp(lpCmdLine + i, "-d", 2))
{
//Espace entre le parametre et le repertoire
sscanf(lpCmdLine + i + 3,"%s",sRepertory);
//sRepertory="c:\\TESTFRANCKRFTEST";
j=1;
}
}


// Parse the command line to find automated unit test requests
for(i = 0; i < strlen(lpCmdLine); i++)
{
if(!strncmp(lpCmdLine + i, "-ut", 3))
{
unsigned int unTestID = 0;
sscanf(lpCmdLine + i + 3, "%u", &unTestID);
switch(unTestID)
{
case 1:
if(j==0)
{
pApp->SetUnitTest(New UTSky(pApp, true));
}
else
{
pApp->SetUnitTest(New UTSky(pApp, true,sRepertory));
}
break;
case 2:
if(sRepertory.empty())
{
pApp->SetUnitTest(New UTConformingLobes(pApp, true));
}
else
{
//pApp->SetUnitTest(New UTConformingLobes(pApp, true, sRepertory));
}
break;
// UNIT_TEST_TODO: Create an automated version of your test here
}
}
}


// Run the application & return result
int nRetVal = pApp->InitAndRun();


// Delete the application
delete pApp;


// Return result
return nRetVal;
}

1 réponse

SMarmotte Messages postés 53 Date d'inscription vendredi 17 janvier 2003 Statut Membre Dernière intervention 12 novembre 2005
17 oct. 2005 à 20:52
Salut



Argument : -ut1 ou -ut2 (marche impecable)

Argument -d c:\toto (il me garde uniquement mon c: pkoi ???)



le deuxième foire (selon toi) car \t est un caractère de tabulation



Solutions :

Argument -d "c:\toto" (avec des guillemets ça doit marcher)

Argument -d c:\\toto (avec double backslash ça doit marcher)



Il existe des caractères spéciaux en C

\n : new line

\r : return (retour charriot)

\t : tabulation (horizontale)

\v : vertical tabulation

\b : backspace



Comme tu remarques, \ précède certains caractères spéciaux

Pour faire \ en C il faut faire \\ car \ est un caractère de déspécialisation



ex :

strcpy(filename, "c:\\file.ext"); // filename contient << c:\file.ext >>



C'est pkoi il existe les caractères " et ' pour préciser à ton shell que tu utilises une chaine de caractère non interprétable.



Voilà

En espérant t'avoir aidé

SMarmotte
3
Rejoignez-nous