Oppure

Loading
08/06/09 17:42
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 ;);)
aaa
08/06/09 19:28
theprogrammer
A cosa ti serve? Se ci chiarisci il contesto in cui vuoi usare tale funzionalità, forse si capisce meglio ...

aaa
09/06/09 6:15
kaig
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
aaa
09/06/09 8:17
gigisoft
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. :k:

Luigi
aaa
09/06/09 8:27
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?

E quando ritieni concluso l'input se manca l'invio?
aaa
09/06/09 8:37
gigisoft
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

[...]
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'


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 09/06/09 8:39
aaa
09/06/09 8:42
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.
aaa
09/06/09 8:57
gigisoft
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. :k:

Luigi
aaa