Konsolenprogramme Eingabe

Gast #1997778
Lesenswert?

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ß
Gast #1997803
Lesenswert?

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.
#1997814
Lesenswert?

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.
Gast #1997981
Lesenswert?

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.
#1998001
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren