kaig (Ex-Member)
Newbie
Messaggi: 19
Iscritto: 25/05/2009
|
Ciao, avevo l'intenzione di leggere dei caratteri dallo stram di input senza necessariamente attendere la pressione del tasto INVIO, ma a quanto pare non è possibile (ditemi se sbaglio!!). In alternativa ho pensato che leggendo direttamente i tasti (e facendo ritornare il relativo codice (che mi sembra ci sia)) da tastiera avrei potuto gestire meglio la cosa. Ora però non so come leggere tali tasti e come associarli ai loro codici. Ho trovato in giro un acerta funzione "_getch()" ma mi sembra che funzioni con visual c++ (ditemi di nuovo se sbaglio)...
Se conoscete qualche funzione utile al caso siete i benvenuti. grazie
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
A cosa ti serve? Se ci chiarisci il contesto in cui vuoi usare tale funzionalità, forse si capisce meglio ...
|
|
kaig (Ex-Member)
Newbie
Messaggi: 19
Iscritto: 25/05/2009
|
Il tutto non ha interfaccia grafica, è un' applicazione console dove devo ricevere dei caratteri da tastiera seguiti da da inserimenti di stringa. il fatto è che qundo l'utente digita un carattere predefinito il programma deve accettarlo e passare subito al successivo inserimento di stringa, senza chiedere la pressione del tasto INVIO.
Così facendo diventerebbe tutto piu' fluido e l'utente non dovrebbe preoccuparsi di digitare 3000 INVII. Spero di essere stato chiaro.. ciao
|
|
gigisoft (Member)
Guru
Messaggi: 696
Iscritto: 11/10/2008
|
Postato originariamente da kaig:
Ciao, avevo l'intenzione di leggere dei caratteri dallo stram di input senza necessariamente attendere la pressione del tasto INVIO, ma a quanto pare non è possibile (ditemi se sbaglio!!). In alternativa ho pensato che leggendo direttamente i tasti (e facendo ritornare il relativo codice (che mi sembra ci sia)) da tastiera avrei potuto gestire meglio la cosa. Ora però non so come leggere tali tasti e come associarli ai loro codici. Ho trovato in giro un acerta funzione "_getch()" ma mi sembra che funzioni con visual c++ (ditemi di nuovo se sbaglio)...
Se conoscete qualche funzione utile al caso siete i benvenuti. grazie |
a suo tempo usavo la getch() ( senza underscore ) che funzionava tranquillamente in turbo C++ ( eh si, i vecchi tempi del DOS ).
Riguardo alla codifica, usava semplicemente la codifica ASCII, per alcuni tasti ( per esempio le frecce ) usava una codifica con due caratteri ( prima #0 e poi un'altro ), comunque puoi fare un semplice programmino per farti restituire i codici dei vari tasti.
Spero di esserti stato di aiuto.
Ciao.
Luigi |
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Postato originariamente da kaig:
Così facendo diventerebbe tutto piu' fluido e l'utente non dovrebbe preoccuparsi di digitare 3000 INVII. |
E se l'utente sbaglia?
E quando ritieni concluso l'input se manca l'invio? |
|
gigisoft (Member)
Guru
Messaggi: 696
Iscritto: 11/10/2008
|
Postato originariamente da theprogrammer:
Postato originariamente da kaig:
Così facendo diventerebbe tutto piu' fluido e l'utente non dovrebbe preoccuparsi di digitare 3000 INVII. |
E se l'utente sbaglia?
|
dovresti fare qualcosa del genere
Codice sorgente - presumibilmente C/C++ |
[...]
int I = 0;
while (I = 0) {
C = getch();
switch (C) {
// Qui' metti le reazioni per tasti corretti settando I = 1;
default:
// Qui' metti la reazione per tasti non corretti
}
}
[...]
|
E quando ritieni concluso l'input se manca l'invio?
|
puoi modificare il while di sopra cosi'
Codice sorgente - presumibilmente C/C++ |
int I = 0;
char C = 0;
while ((I = 0)&&(C != 13)) { // Se non ricordo male 13 e' il codice per INVIO
|
Ultima modifica effettuata da gigisoft il 09/06/2009 alle 10:39 |
|
kaig (Ex-Member)
Newbie
Messaggi: 19
Iscritto: 25/05/2009
|
Postato originariamente da theprogrammer:
E se l'utente sbaglia?
E quando ritieni concluso l'input se manca l'invio? |
Il controllo sull'input verrebbe comunque dopo l'acquisizione del carattere, e in caso di errore verrebbe restituito un messaggio di errore.
Per la conclusione dell'input..io devo leggere uno e un solo carattere (il tasto premuto) e l'input deve finire li. Quello che viene digitato poi fa parte della stringa successiva. |
|
gigisoft (Member)
Guru
Messaggi: 696
Iscritto: 11/10/2008
|
Postato originariamente da kaig:
Postato originariamente da theprogrammer:
E se l'utente sbaglia?
E quando ritieni concluso l'input se manca l'invio? |
Il controllo sull'input verrebbe comunque dopo l'acquisizione del carattere, e in caso di errore verrebbe restituito un messaggio di errore.
Per la conclusione dell'input..io devo leggere uno e un solo carattere (il tasto premuto) e l'input deve finire li. Quello che viene digitato poi fa parte della stringa successiva. |
Il controllo dell'input DEVE avvenire dopo l'acquisizione del carattere, la getch() legge uno e un solo carattere, per la reazione decidi TU cosa il programma deve fare in base al tasto premuto, io mi sono limitato a fare un esempio di come usarla.
Ciao.
Luigi |
|
kaig (Ex-Member)
Newbie
Messaggi: 19
Iscritto: 25/05/2009
|
la funzione getch() ho visto che puo' essere utilizzata sotto windows includendo la libreria conio.h, io, dato principalmente uso linux (scusate se non l'ho specificato prima..) non potrei utilizzarla. Pensavo che ci fosse una funzione appartenete ad una libreria standard, ma tanté..
Ora provo a vedere se riesco a portare la conio.h su linux
ciao
ps: una curiosità..come mai (su win) se scrivo getch(), getche(), o _getch() funziona uguale? è un po' strano,... grazie
|
|