Hallo! Ich programmiere gerade eine simple Prozessüberwachungssimulierung. Dabei habe ich ein Win32-Konsolenprojekt in C++ geschrieben. Nun habe ich 3 Messwerte, die ich auf die Konsole ausgeben will. Dabei soll die erste Zeile für Messwert 1, die 2. für MW 2, usw sein. Wenn ich jetzt einfache cout oder printf mache, dann werden die Messwerte (die in unterschiedlichen Zeitabständen aktualisiert werden sollen) hintereinander geschrieben. Ich möchte es so machen, dass sich nur die 2. Zeile ändert, wenn Messwert 2 aktualisiert wurde. Gibt es eine Möglichkeit zu sagen, an welcher Cursor-Stelle das printf () ausgeführt werden soll, oder Welche Möglichkeiten habe ich? Gruß, Johnsn
Du wirst nicht umhinkommen, Dich mit den Win32-API-Funktionen zu beschäftigen, die unter "Console I/O" zusammengefasst werden. http://msdn2.microsoft.com/en-us/library/ms682010.aspx ist der Einstieg in deren Dokumentation. Für Dich interessant ist der Bereich "low-level console I/O". Besonders einfach oder übersichtlich sind die Funktionen dort jedoch nicht. http://msdn2.microsoft.com/en-us/library/ms682022.aspx zeigt, wie der Inhalt der Konsole gelöscht werden kann. Allerdings wird hier Beitrag "Re: Formatierte Textausgabe in C" eine Library beschrieben, die einem die Ekligkeiten der Konsolenprogrammierung abnimmt.
Habs mir jetzt aus dieser Wrapper-Lib rausgezupft, danke!
1 | COORD coordPos; |
2 | |
3 | coordPos.X = Xval; |
4 | coordPos.Y = Yval; |
5 | |
6 | SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coordPos); |
Das geht auch - sofern man den Terminal Modus (z.B. ASCII, VT100) kennt - mit Escape Sequenzen. Einfach mal nach googlen. Vorteil: Portabilität.
Das geht aber nicht in der Windows-Konsole. Die kennt keine Escape-Sequenzen. Für DOS gab es ANSI.SYS, aber der Ansatz ist tot.
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.