PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : system("CLS") - Ersatz Code



jookerxxx
14.10.2010, 18:23
Hey Community,

alsoooooooo :

Wie der Titel es einigermaßen zu erahnen vermag,( hoffentlich ) ,
suche ich einen Ersatz-Code für den C++ Befehl:


system("CLS")

Ihr prangert ja immer an, dass dieser Befehl stilistisch daneben ist...
also nicht nur Ihr, sondern auch die Allgemeinheit, ich selbst mit
einbezogen.
Ich suche also eine C++ stilistisch würdige Alternative , die
den Bildschirm cleared.

Danke im Voraus :) !

MFG

jookerxxx

sarex
14.10.2010, 18:33
Wenn du für Windows programmierst, hilft dir die Konsolen-API weiter. Du könntest dir zB die clrscr()-Implementierung von *link entfernt da die seite down ist* abschauen.
Wenn du für Unix entwickelst ist ncurses das richtige Stichwort für eine Suche http://www.c-plusplus.de/forum/images/smiles/wink.gif.
Plattformunabhängig geht da nichts - aber das ist ja selbst system("cls") nicht - wird cls ja nur auf manchen Betriebssystemen als ClearScreen gewertet. Am nächsten eventuell als call lame service.
mfg

jookerxxx
14.10.2010, 18:48
Sry. Aber das hat mir net SOOO VIEL weitergeholfen ...
Gibt es DIREKTE LösungsVorschläge?
Gibt es ne Konsolen-Api Reference ?
Würde beides Helfen :P

|)4NT3
14.10.2010, 18:59
Console.Clear Method (System) (http://msdn.microsoft.com/en-us/library/system.console.clear.aspx)
^^MSDN

vllt hilft dir das ja weiter, habe es nicht ausprobiert !


Consolen Reference MSDN (http://msdn.microsoft.com/en-us/library/ms682087%28VS.85%29.aspx) mit funktionen usw

Bonkers
14.10.2010, 19:28
Console.Clear Method .NET Framework 4

Haha, da benutzt du lieber system() als das Framework ;)

jookerxxx
17.10.2010, 12:55
Wirklich Niemand der mir helfen kann?
Oke ich schilder mal mein Vorhaben, vllt wird es DANN etwas ersichtlicher:

Ich lasse , mit Hilfe von glut, ein Objekt sich drehen.
Dabei will ich , dass die Variable "angle" stätig in der Konsole ausgegeben wird.
Bislangen hat es geklappt, jedoch nur mit dem Befehl : system("CLS")

Ich will also, dass sie nicht UNTEREINANDER ausgegeben wird, sondern immer so bleibt.

so NICHT:

angel : 1
angle : 2
angle : 3

so JA :

angle : 1 // ändert sich dann zu : 2 ,3 ,4 ,5

blackberry
17.10.2010, 13:00
\r statt \n bzw. endl benutzen.

EDIT:
Hier noch ein Beispielcode:

#include <stdio.h>
#include <windows.h>


int main(void)
{
int i = 20;

while(i--)
{
printf("Der Wert von i ist %d. \r", i);
// nicht besser als system(), aber es soll ja nur ein Beispiel sein
// im echten Programm wird sicher anders "gewartet"
Sleep(300);
}
return 0;
}
Die Leerzeichen am Ende müssen sein, da \r auf Windows (und Linux; auf Mac's sollte es nicht funktionieren, da die ein \r für einen Zeilenumbruch benutzen) die "Cursorposition" wieder an den Anfang der Zeile setzt, diese aber nicht gänzlich überschreibt.
Würde man diese also weglassen gäbe es folgende Ausgabe:
[...]
Der Wert von i ist 10.
Der Wert von i ist 9..
[...]
(man beachte den zusätzlichen Punkt, der noch von der 10. stammt)

jookerxxx
17.10.2010, 13:40
Danke, hat bestens geholfen.
Manchmal, helfen auch die EINFACHEN sachen weiter :)
EscapeZeichen ... hatte ich schon lange verdrengt.
Wünsch Euch noch n schönen Tag alle :)(L)

wacked
17.10.2010, 14:52
SetConsoleCursorPosition (http://msdn.microsoft.com/en-us/library/ms686025%28v=VS.85%29.aspx)
natürlich nicht plattformunabhängig blablabla

Ethon
05.11.2010, 15:38
Mit Carriage returns lassen sich einzelne Zeilen gut "resetten". ('\r')

Mfg,
Ethon