()
Newbie
Messaggi:
Iscritto:
|
ciao raga...
qualcuno di voi sa postarmi un esempio pratico di una applicazione WIN32 che usa gli argomenti?
cioè io scrivo "applicazione.exe -a" e appare un messagebox con scritto ciao, e se scrivo "applicazione.exe -b" e appare un messagebox con scritto salve...
non so chiedo troppo ma se potete darmi il codice sorgente....
grazie..
conto su di voi....
|
|
Rand (Ex-Member)
Pro
Messaggi: 163
Iscritto: 17/05/2005
|
eccoti un esempio
Codice sorgente - presumibilmente C++ |
#include <iostream> #include <string> using namespace std; int main(int argc, char **argv) { //argv[0] => argomento: nome del programma //argv[1] => argomento: opzione o "-a" o "-b" //controllo i parametri passati da linea di comando if(argc<2 || strcmp(argv[1],"-a"!=0 || strcmp(argv[1],"-b"!=0) { //se sono meno di quelli richiesti o errati: errore cout<<"ERRORE: argomenti non validi."<<endl; cout<<"Sintassi corretta: nome_prg.exe [opzione -a; -b]\n"<<endl; return -1; } //se invece è tutto corretto controllo di quale parametro si tratta if(strcmp(argv[1],"-a")==0) { //stampo il msgbox 1 //cout<<"opzione -a!"<<endl; } if(strcmp(argv[1],"-b")==0) { //stampo il msgbox 2 //cout<<"opzione -b!"<<endl; } system("pause"); return 0; }
|
se hai ancora problemi, o vuoi altri chiarimenti, chiedi pure!
|
|
()
Newbie
Messaggi:
Iscritto:
|
il compiler mi da questi errori... dove sbaglio?
7 - cannot convert `bool' to `const char*' for argument `2' to `int strcmp(const char*, const char*)'
20 - expected `)' before ';' token
scusa ma mi puoi spegare brevemente la funzione strcmp()?
abbi pazienza... e grazie!
Ultima modifica effettuata da il 17/09/2006 alle 12:13 |
|
Rand (Ex-Member)
Pro
Messaggi: 163
Iscritto: 17/05/2005
|
manka 1 parentesi dopo "strcmp(argv[1],"-a"!=0"
cmq la strcmp praticamente confronta 2 stringhe (il prototipo è: strcmp(char *str1, char*str2) e restituisce 0 se le stringhe sono uguali, altrimenti un valore diverso (m sembra 1, ma tu ttesta su zero che va lo stesso eheh)
|
|
Rand (Ex-Member)
Pro
Messaggi: 163
Iscritto: 17/05/2005
|
ti ho corretto il listato (avevo sbagliato la posizione delle parentesi XD)
Codice sorgente - presumibilmente C++ |
#include <iostream> #include <string> using namespace std; int main(int argc, char **argv) { //argv[0] => argomento: nome del programma //argv[1] => argomento: opzione o "-a" o "-b" //controllo i parametri passati da linea di comando if(argc<2 || strcmp(argv[1],"-a")!=0 || strcmp(argv[1],"-b")!=0) { //se sono meno di quelli richiesti o errati: errore cout<<"ERRORE: argomenti non validi."<<endl; cout<<"Sintassi corretta: nome_prg.exe [opzione -a; -b]\n"<<endl; return -1; } //se invece è tutto corretto controllo di quale parametro si tratta if(strcmp(argv[1],"-a")==0) { //stampo il msgbox 1 //cout<<"opzione -a!"<<endl; } if(strcmp(argv[1],"-b")==0) { //stampo il msgbox 2 //cout<<"opzione -b!"<<endl; } system("pause"); return 0; }
|
|
|
### (Normal User)
Rookie
Messaggi: 44
Iscritto: 07/09/2006
|
Postato originariamente da SystemCrash:
ciao raga...
qualcuno di voi sa postarmi un esempio pratico di una applicazione WIN32 che usa gli argomenti?
cioè io scrivo "applicazione.exe -a" e appare un messagebox con scritto ciao, e se scrivo "applicazione.exe -b" e appare un messagebox con scritto salve...
non so chiedo troppo ma se potete darmi il codice sorgente....
grazie..
conto su di voi.... |
Pensavo intendessi una applicazione Win32, ma vedo che ti è stato dato un esempio di applicazione console... probabilmente faccio confusione, cmq per chi fosse interessato
nlle applicazioni Win32 si prende l'intera riga di comando:
Codice sorgente - presumibilmente C/C++ |
int WINAPI
WinMain(HINSTANCE hInst, HINSTANCE hPrevInst,
LPSTR lpCmdLine, int nCmdShow)
{
return 0;
}
|
che corrisponde all'argomento lpCmdLine, i singoli argomenti si ottengono da quest'ultima facendo attenzione al fatto che gli spazi vengono considerati tali. |
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Codice sorgente - presumibilmente C/C++ |
int WINAPI
WinMain(HINSTANCE hInst, HINSTANCE hPrevInst,
LPSTR lpCmdLine, int nCmdShow)
{
[b]MessageBox(0,lpCmdLine,"",0);[/b]
return 0;
}
|
Più semplice di così
|
|