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

cs_chuckboy 64 Messages postés vendredi 16 septembre 2005Date d'inscription 31 mars 2009 Dernière intervention - 17 oct. 2005 à 19:44 - Dernière réponse : SMarmotte 53 Messages postés vendredi 17 janvier 2003Date d'inscription 12 novembre 2005 Dernière intervention
- 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;
}
Afficher la suite 

1 réponse

Répondre au sujet
SMarmotte 53 Messages postés vendredi 17 janvier 2003Date d'inscription 12 novembre 2005 Dernière intervention - 17 oct. 2005 à 20:52
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de SMarmotte

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.