|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3992
|
da getch() a int
Ciao
in un programma rilevo la pressione del tasto ESC così: ...... #include <conio.h> #define ESC_KEY 27 ......... int tasto=0; tasto = getch(); // tasto premuto ...ecc ecc Il problema è che se effettivamente viene premuto il tasto ESC della tastiera ho impostato un ciclo if che fa uscire dalla funzione, ma non so come fare per assegnare un valore numerico a questo punto a "tasto" in modo che a sua volta sia assegnato ad un'altra variabile int che deve essere passata ad una funzione. Ho provato e riprovato ma produco sempre errori differenti anche se molte volte il codice si compila (ma il programma ad un cero punto si blocca) che mi dite? grazie |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2003
Città: Biella
Messaggi: 843
|
se mi rispieghi il tutto vedo se posso aiutarti, non ho capito molto bene il tuo problema....
__________________
Ubl~Team Rulez ^_^ |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
A tasto è già assegnato un valore numerico...
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3992
|
ecco il codice:
Codice:
....
#include <conio.h>
#define ESC_KEY 27
.........
else if (scelta == 10){
cout<<"Vuoi modificare i dati di quale libro?"<<endl;
cout<<"Numero posizione: ";
int tasto=0;
tasto = getch(); // tasto premuto
if ( tasto!=ESC_KEY ){
cin>>posmod;
modificaContatto (rubrica,contatto, posmod);
aggiungiModifica (rubrica,contatto, posmod);
}
volte. ad esempio voglio passere il numero posizione 1 devo premere 2 volte 1 perchè la prima volta comunica che non si tratta del tasto ESC. Vorrei che il valore di tasto (a meno che non sia proprio esc) sia assegnato in questo caso a posmod. Chiaro? Grazie e ciao |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
posmod = tasto - '0';
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3992
|
Quote:
ciao e grazie mi spieghi, per favore, perche - '0'? che significa? |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Perchè la tabella dei codici ASCII pone i numeri in questo modo:
0 1 2 3 4 5 6 In pratica sono codici consecutivi, quindi se togli dalla codifcia di un numero lo zero...hai il numero |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3992
|
e se posmod fosse stato un char o char[] (oppure string)
come bisognava procedere? grazie e ciao. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Se è char:
posmod = tasto; Se è char[]: posmod[i] = tasto; |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3992
|
con una variabile di tipo string non funziona.
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
string st;
.... st.push_back(tasto); .... |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3992
|
scusami ancora
ho provato a fare così nel mio programma: cout <<"Inserisci Titolo: "; tasto = getch(); // tasto premuto if (tasto!=ESC_KEY) { contatto.titolo.push_back(tasto); ...... ...... else { return; } Se il tasto premuto non è esc la stringa (titolo che fa parte di una struttura) dovrebbe essere assegnata a contatto.titolo ma esco fuori comunque dal ciclo al primo tasto battuto. Forse non mi sono spiegato bene e/o non ho capito. grazie |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Fammi vedere un po' più codice...ad esempio non vedo cicli
|
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3992
|
Quote:
Codice:
void modificaContatto (lstRubrica &rubrica,datiRubrica &contatto,int posmod){
cin.ignore();
int tasto=0;
int mod = 0;
int i = 0;
i = posmod-1;
cout << "Quale modifica vuoi apportare ai dati del libro?"<<endl;
cout << " 1. Al Titolo"<<endl<<" 2. All' Autore"<<endl<<" 3. All'Editore"<<endl;
cout << " 4. Al Prezzo"<<endl<<" 5. Tutti"<<endl<<" 6. Disponibilita'"<<endl;
cout <<"Scelta: ";
tasto = getch(); // tasto premuto
if ( tasto!=ESC_KEY){
mod=tasto - '0';cout<<mod;
}
else
{
return ;
}
Se ti serve fammi sapere? ciao e grazie |
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Appunto dicevo che non vedevo cicli
while (tasto!=ESC_KEY) { contatto.titolo.push_back(tasto); ...... ...... else { return; } |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:06.



















