Hallo Für die Steuerung von Konsolenprogrammen benötige ich 2 Sachen. Zum einen die Konsole leeren. Dafür habe ich leider noch keine Plattformunabhängige Lösung gefunden. Gibt es so etwas überhaupt? Und dann für die Menüpunkte das Abfragen eines Zeichens. Allerdings ohne Enter zu drücken zum bestätigen. Gibt es da etwas in der Standardbibliothek? Gruß
:
Verschoben durch User
Dieter schrieb: > Und dann für die Menüpunkte das Abfragen eines Zeichens. Allerdings ohne > Enter zu drücken zum bestätigen. Gibt es da etwas in der > Standardbibliothek? getc müsste dafür gehen, aber damit kann man nicht die sondertastern abfragen( alt, strg usw)
Dieter schrieb: > Hallo > > Für die Steuerung von Konsolenprogrammen benötige ich 2 Sachen. > > Zum einen die Konsole leeren. Dafür habe ich leider noch keine > Plattformunabhängige Lösung gefunden. Gibt es so etwas überhaupt? Kommt drauf an, was du unter 'plattformunabhängig' verstehst. Es gibt z.B. (n)curses: Das läuft mehr oder weniger auf sämtlichen UNIX-Derivaten, Linux, BSD, MacOS etc. inbegriffen. Nur m.W.n. natürlich unter Windoof nicht. Für mich ist das plattformunabhängig, wenn man eine aus zig Plattformen nicht unterstützt. (Es gibt/gab aber mal ein curses für Windows. pdcurses hieß das, glaube ich) > Und dann für die Menüpunkte das Abfragen eines Zeichens. Allerdings ohne > Enter zu drücken zum bestätigen. Gibt es da etwas in der > Standardbibliothek? Auch ncurses. Alternativ funktioniert unter UNIX-Derivaten, die Konsole in den nicht-kanonischen Modus zu bringen, etwa mit termio oder termios. Für DOS gabs früher(tm) getch() (mit C-H am Ende), ist aber nicht portabel.
Das getch() heißt inzwischen m.W. _getch(), dazu gehört ein _kbhit() - damit kann man fragen, ob noch Zeichen da sind unter Windows. Ohne eine solche Funktion wird es schwierig, die Eingabe zu leeren, weil man ja nur (über-) lesen will, solange etwas da ist. Diese beiden sind nicht direkt portabel, aber ich habe sie für Linux nachprogrammiert, falls jemand Bedarf hat.
Also bei mir funktionieren weder _getch() noch getch(). Also er findet sie nciht.
#include <conio.h> ... _kbhit() _getch() http://msdn.microsoft.com/de-de/library/58w7c94c(v=vs.80).aspx http://msdn.microsoft.com/en-us/library/078sfkak(v=vs.71).aspx
Ok ich nutze leider kein Windows. Daran wird es wohl liegen. Das Problem ist, dass ich das Programm zusammen mit anderen schreibe, und einige nutzen auch Windows. Deshalb sollte es unter allen gängigen Betriebssystemen lauffähig sein. Ich habe auch noch ein wenig herumprobiert. Etwas gescheites habe ich noch nicht gefunden. Also ich möchte: -Konsole löschen -Auf Tastendruck reagieren -Tastaturpuffer leeren Aber was ich bis jetzt so gelesen habe ist das alles höchst Plattformabhängig.
Für Konsole "löschen" könnte man einfach z.B. 40 mal "newline" ausgeben, damit das Fenster wieder schwarz ist :-)
PS: Das Leeren des Puffers würde dann so aussehen:
1 | #include <conio.h> |
2 | ...
|
3 | while( _kbhit() ) |
4 | {
|
5 | getch(); |
6 | }
|
Floh schrieb: > Für Konsole "löschen" könnte man einfach z.B. 40 mal "newline" ausgeben, > damit das Fenster wieder schwarz ist :-) Unter dem Löschen hatte ich das Löschen des Eingabepuffers verstanden; deine Variante kann natürlich genauso zutreffen. Da kann man dann aber in der Konsole wiederum die passende ANSI-Sequenz heraussuchen. Oder: http://msdn.microsoft.com/en-us/library/ms682022(VS.85).aspx
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.