Screen "löschen"



  • Wie kann ich den Screen reseten, also, dass nichts mehr dasteht, dass mal ausgegeben wurde?



  • unter Windows geht das mit:

    system("cls");
    

    Eine andere Idee würde mich auch interessieren!
    Gruß Alex



  • Hallo,

    ich glaube, C++ bringt dafür nichts standardmäßig mit. 😞
    Du musst also auf Betriebssystemfunktionen zurückgreifen.

    Bei Linux muss man glaube ich ein spezielles Zeichen ausgeben, damit die Konsole geleert wird.



  • mit termios und escape sequenzen.

    char *EscClearscr;
    EscClearscr=tigetstr ("clear");
    fputs (EscClearscr, fileno (stdout));
    

    Keine Garantie das es funktioniert 😉

    Edit: Je nachdem, welchen Parameter man für tigetstr nimmt, kann man auch etliche andere funktionen ausführen. Zum Beispiel Cursor verschieben oder so.



  • Sonst würde mir da nur noch clrscr(); (aus conio.h) einfallen. Aber die Funktion is weder im C++ Standard enthalten noch Teil von Windows.



  • Alex30 schrieb:

    unter Windows geht das mit:

    system("cls");
    

    hm, bei mir flimmert das dann immer so sehr, wenn ich es in jedem Frame z.B in einer while Schleife eines kleinem Spiels verwende! Würde mich deshalb auch interessiern, wie man es am Besten machen kann...



  • Sledgehammer schrieb:

    Würde mich deshalb auch interessiern, wie man es am Besten machen kann...

    Ist abhängig vom BS und vom Compiler.
    Welches BS und welchen Compiler verwendest du?



  • Hi!

    Ist zwar kein direktes löschen des Screens, aber man könnte ja eine bestimmte Anzahl Leerzeilen auf der Konsole ausgeben, bis der alte Text weg ist. In Windows wären das glaub 25 Zeilen. Sofern es dich nicht stört das man es durch scrollen evtl noch lesen könnte.

    Code-Hacker



  • dann doch lieber die methode:

    void clrscr(){
        for(int y=0;y<25;++y){
            gotoxy(0,y);
            cout<<"80 leerzeichen";
        }
    }
    


  • Wohl auch eher ne Krücke, da in Windows die Konsolengröße ja einstellbar ist...



  • Hi!

    Nur bieten leider nicht alle conio.h Implementierungen eine gotoxy Funktion. Und das reine Ausgaben von Leerzeilen funktioniert immehin immer, zumindest wenn es darum geht eine Standard-Funktion zu verwenden, wenn diese natürlich alles andere als optimal ist.

    Code-Hacker



  • Hi, ich hab irgendwann mal folgendes gefunden, vielleicht lässt sich damit ja was anstellen?!

    #include <stdio.h> 
    #ifdef __unix__ 
       #define clrscr() printf("\x1B[2J") 
    #elif __BORLANDC__ && __MSDOS__ 
       #include <conio.h> 
    #elif __WIN32__ || _MSC_VER 
       #include <stdlib.h> 
       #define clrscr() system("cls") 
    #else 
       #define clrscr() printf("clrscr() - Fehler!!\n") 
    #endif
    

    Habs aber nie getestet... :p

    P.S. das ist nicht von mir sondern irgendwo aus den weiten des Netzes gefischt 😃


Log in to reply