[C++] Statusbalken

[Moepi]1

Lt. Commander
Registriert
Jan. 2002
Beiträge
1.233
Von unzähligen Kommandozeilentools (besonders unter Linux) kennt man ja so schicke Statusbalken, die meinetwegen anzeigen, wie viel von ner Datei schon runtergeladen wurde. Die bauen sich, ganz wie in ner grafischen Oberfläche, langsam von links nach rechts auf. Also meinetwegen so:

Code:
File downloaded: [========>                ] 50%

Meine Frage ist jetzt, wie ich so etwas programmiere. Ich müsste ja schließlich auf der Kommandozeile immer wieder dieselbe Zeile überschreiben. Mit nem printf oder std::cout hängt er mir ja aber immer nur neuen Text an.
Ok, man könnte jetzt vor jedem neuen Druck den Bildschirm löschen lassen. Dann wär der Statusbalken aber immer ganz oben - die erwähnten Programme zeigen ja aber, dass es auch anders geht...


Hat da jemand ne Idee?
 
gotoxy oder SetConsoleCursorPosition
 
oder durch das escape zeichen '\b' immer wieder den statusbalken löschen. wobei da halt nicht allzu elegant ist...
 
Gibt es auch irgendwas nicht micorosft-proprietäres? Der Code sollte unter Windows und Linux lauffähig sein...
 
Nein, gibt es nicht.

Der Zugriff auf die Konsole (falls das Programm überhaupt in einer solchen läuft) ist Betriebssystem-spezifisch. Am einfachsten wird es wohl, wenn du mit #ifdef arbeitest. Unter Linux könntest du spezielle Terminal-Kommandos verwenden, wenn die Shell die verstehst. Oder du benutzt die ncurses-Bibliothek. (Aber die heißt nicht umsonst so... curse == fluch)
 
Verdammte Axt, aber danke trotzdem!
 
Möglicherweise - oder recht wahrscheinlich - haben sich Opensourceprojekte dieser Problematik schon angenommen und es gibt fertige Bibliotheken, die das kapseln. Versuch doch mal dein Glück auf sourceforge. =)
 
Zurück
Oben