Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - argomenti del programma
Forum - C/C++ - argomenti del programma

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
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....;)

PM Quote
Avatar
Rand (Ex-Member)
Pro


Messaggi: 163
Iscritto: 17/05/2005

Segnala al moderatore
Postato alle 14:40
Sabato, 16/09/2006
eccoti un esempio

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. int main(int argc, char **argv) {
  6. //argv[0] => argomento: nome del programma
  7. //argv[1] => argomento: opzione o "-a" o "-b"
  8.  
  9. //controllo i parametri passati da linea di comando
  10. if(argc<2 || strcmp(argv[1],"-a"!=0 || strcmp(argv[1],"-b"!=0) {
  11.    //se sono meno di quelli richiesti o errati: errore
  12.    cout<<"ERRORE: argomenti non validi."<<endl;
  13.    cout<<"Sintassi corretta: nome_prg.exe [opzione -a; -b]\n"<<endl;
  14.    return -1;
  15. }
  16. //se invece è tutto corretto controllo di quale parametro si tratta
  17. if(strcmp(argv[1],"-a")==0) {
  18.      //stampo il msgbox 1
  19.      //cout<<"opzione -a!"<<endl;
  20. }
  21. if(strcmp(argv[1],"-b")==0) {
  22.      //stampo il msgbox 2
  23.      //cout<<"opzione -b!"<<endl;
  24. }
  25.  
  26. system("pause");
  27. return 0;
  28. }



se hai ancora problemi, o vuoi altri chiarimenti, chiedi pure! :k:

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 12:09
Domenica, 17/09/2006
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
PM Quote
Avatar
Rand (Ex-Member)
Pro


Messaggi: 163
Iscritto: 17/05/2005

Segnala al moderatore
Postato alle 16:37
Domenica, 17/09/2006
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)

PM Quote
Avatar
Rand (Ex-Member)
Pro


Messaggi: 163
Iscritto: 17/05/2005

Segnala al moderatore
Postato alle 16:39
Domenica, 17/09/2006
ti ho corretto il listato (avevo sbagliato la posizione delle parentesi XD)

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. int main(int argc, char **argv) {
  6. //argv[0] => argomento: nome del programma
  7. //argv[1] => argomento: opzione o "-a" o "-b"
  8.  
  9. //controllo i parametri passati da linea di comando
  10. if(argc<2 || strcmp(argv[1],"-a")!=0 || strcmp(argv[1],"-b")!=0) {
  11. //se sono meno di quelli richiesti o errati: errore
  12. cout<<"ERRORE: argomenti non validi."<<endl;
  13. cout<<"Sintassi corretta: nome_prg.exe [opzione -a; -b]\n"<<endl;
  14. return -1;
  15. }
  16. //se invece è tutto corretto controllo di quale parametro si tratta
  17. if(strcmp(argv[1],"-a")==0) {
  18. //stampo il msgbox 1
  19. //cout<<"opzione -a!"<<endl;
  20. }
  21. if(strcmp(argv[1],"-b")==0) {
  22. //stampo il msgbox 2
  23. //cout<<"opzione -b!"<<endl;
  24. }
  25.  
  26. system("pause");
  27. return 0;
  28. }



:k:

PM Quote
Avatar
### (Normal User)
Rookie


Messaggi: 44
Iscritto: 07/09/2006

Segnala al moderatore
Postato alle 19:54
Martedì, 26/09/2006
Testo quotato

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++

  1. int WINAPI
  2. WinMain(HINSTANCE hInst,  HINSTANCE hPrevInst,
  3.         LPSTR lpCmdLine, int nCmdShow)
  4. {
  5.  
  6.     return 0;
  7. }



che corrisponde all'argomento lpCmdLine, i singoli argomenti si ottengono da quest'ultima facendo attenzione al fatto che gli spazi vengono considerati tali.

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 23:33
Martedì, 26/09/2006
Codice sorgente - presumibilmente C/C++

  1. int WINAPI
  2. WinMain(HINSTANCE hInst, HINSTANCE hPrevInst,
  3. LPSTR lpCmdLine, int nCmdShow)
  4. {
  5.  
  6. [b]MessageBox(0,lpCmdLine,"",0);[/b]
  7.  
  8. return 0;
  9. }



Più semplice di così ;)


Il mio blog: https://piero.dev
PM Quote