Systembefehl CLS



  • Wie implementiere ich den Systembefehl CLS(Clera Screen) in meinem C++ Programm.
    Danke für jede Antwort.



  • system("cls");



  • Siehe Konsolen FAQ

    Und falsches Forum 😉

    BR



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Versuch system("cls") möglichst zu vermeiden, soll schlechte auswirkungen haben.
    In wiefern kann ich dir nicht sagen.
    Nur wie man den Befehl durch einen anderen ersetzen kann, kann ich dir sagen.

    Du nimmst einfach folgenden Code zu deinem Programm:

    //Clearscreen!
    //******************************************************************************
    void gotoxy (int x, int y)
    {
        COORD pos={x, y};
    
        cout.flush ();
        SetConsoleCursorPosition (GetStdHandle (STD_OUTPUT_HANDLE), pos);
    }
    
    void clrscr ()
    {
        HANDLE handle=GetStdHandle (STD_OUTPUT_HANDLE);
        CONSOLE_SCREEN_BUFFER_INFO info;
        COORD pos={0, 0};
        DWORD dw;
    
        cout.flush ();
        GetConsoleScreenBufferInfo (handle, &info);
    
        cout.flush ();
        FillConsoleOutputAttribute (handle, info.wAttributes, info.dwSize.X*info.dwSize.Y, pos, &dw);
        cout.flush ();
        FillConsoleOutputCharacter (handle, ' ', info.dwSize.X*info.dwSize.Y, pos, &dw);
    
        gotoxy (0, 0);
    }
    //******************************************************************************
    

    und schreibst dann statt system("cls") an der gleichen stelle einfach nur noch:

    clrscr();
    

    und schon wird der Bildschirm gelöscht genau wie beim system Befehl.
    Aber ohne schlechte Nebenwirkungen.

    mfg
    Last-Boyscout



  • Eine schlechte Nebenwirkung von

    system("cls");
    

    ist, dass es unter Linux beispielsweise keinen Effekt hat - ausser vielleicht "unknown command", denn dort heisst es stattdessen

    system("clear");
    

    Aber da das hier "DOS und Win32-Konsole" ist, dürfte das glaub ich ziemlich unerheblich sein.



  • Mir wurde von mehreren Seiten von sytem("cls") abgeraten weil er möglicherweise mehr löscht als er soll.
    Kanns dir nicht besser erklären.

    Naja und das mit Linux ist ja auch was.

    mfg
    Last-Boyscout



  • Könnte auch was mit den Puffern zu tun haben, mal sehen, vielleicht hat jemand was gehört oder einen entsprechenden Link? Weil, theoretisch ist das ja der normale DOS-CLS-Befehl, darüber war mir bisher nichts bekannt..vielleicht liegt es aber auch an der Windows-Emulation, wo Windows noch ein Stück "nachräumt" und evtl. dort die Puffer leert oder so...



  • proggaholic schrieb:

    Könnte auch was mit den Puffern zu tun haben, mal sehen, vielleicht hat jemand was gehört oder einen entsprechenden Link? Weil, theoretisch ist das ja der normale DOS-CLS-Befehl, darüber war mir bisher nichts bekannt..vielleicht liegt es aber auch an der Windows-Emulation, wo Windows noch ein Stück "nachräumt" und evtl. dort die Puffer leert oder so...

    Habs gefunden:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39453.html
    Hier im Forum^^


Anmelden zum Antworten