Turbo C++ Problem
Jürgen R.
- programmiertechnik
Ich weiß das gehört hier eigentlich nicht hin aber ich weiß nicht wo ich wo ich sonst fragen sollte.
Folgendes :
Ich will ein Schleife schreiben die, die ganze zeit Befehle ausführt und bei Tastendruck ein paar Meldungen dazu machen soll. DAs ist eigentlich alles kein Problem jedoch wenn ich den Tastendruck mit getche(); einlesen will, bleibt das Programm an der stelle stehen und wartet darauf das eine Taste gedrückt wird. Giebt es eine möglichkeit das zu umgehen ? alla if (keypressed) asd=getche(); oder so ?
Ich hoffe da kann mir jemmand Helfen.
Danke im Vorraus.
Hallo Jürgen,
Ich hoffe da kann mir jemmand Helfen.
Mein C++ ist zu lange her, aber was Du da machen willst, nennst sich Polling (im Gegensatz zum Interrupt-Verfahren). Vielleicht reicht das Stichwort schon, um eine Anleitung oder ein Beispiel zu finden.
HtH-Gruß, Thoralf
Hallo,
Ich will ein Schleife schreiben die, die ganze zeit Befehle ausführt und bei Tastendruck ein paar Meldungen dazu machen soll. DAs ist eigentlich alles kein Problem jedoch wenn ich den Tastendruck mit getche(); einlesen will, bleibt das Programm an der stelle stehen und wartet darauf das eine Taste gedrückt wird. Giebt es eine möglichkeit das zu umgehen ?
In Turbo C (ohne ++) gab es ein Library, in der eine Funktion namens kbhit() oder so versteckt war. Diese prüfte, ob eine Tastatureingabe abgeholt werden konnte oder nicht. Ich denke das sie auhc irgendwie den Weg nach TurboC++ gefunden hat.
Grüße
Klaus
Danke. Ich bin mir sicher das die übernommen wurde, jetzt muss sie nur noch finden.
Hallo Jürgen,
[...] DAs ist eigentlich alles kein Problem jedoch wenn ich den Tastendruck mit getche();
einlesen will, bleibt das Programm an der stelle stehen und wartet darauf das eine Taste
gedrückt wird.
Das nennt man 'blockierendes lesen'.
Giebt es eine möglichkeit das zu umgehen ? alla if (keypressed) asd=getche(); oder so ?
Du musst dem OS bekannt geben, dass von dem Filehandle nicht blockierend gelesen werden
soll. Unter UNIX würde ich dazu fcntl() benutzen. Wie das unter Windows geht, weiss ich
nicht. Ist das bekannt gegeben worden, kehrt getchar() mit einer Fehlermeldung (errno dürfte
auf EAGAIN oder auf EWOULDBLOCK gesetzt werden) zurück.
Grüße,
CK