Ausgaben der Konsolenanwendung löschen



  • Hi,

    ich habe mir ein gleines Programm geschrieben mit dem ich Zahlen vom Dezimalsystem ins Dualsystem umwandeln kann. Natürlich möchte ich gleich mehrere Umwandlung hintereinander machen, allerdings wird das nach kurzem extrem unübersichtlich, wegen den ganzen alten Ausgaben.
    Wie kann ich denn die alten Ausgaben meiner Konsolenanwendung wieder entfernen?



  • Plattformunabhängig afaik nicht möglich. Aber guck doch mal in die Konsolen-FAQ.



  • Danke, werde ich gleich machen.

    Was auch noch hilfreich wäre, soweit ich weiß kann man über scanf() mehrere Werte (z.B. durch Komma getrennt) in eine Zeile eingeben und den entsprechenden Variablen zu zuweißen.. Ist das auch mit cin spricht iostream möglich? Wenn nicht, ist es sinnvoll die Eingaben über scanf() und die Ausgaben über cout zu machen, oder sollte ich mich in dem jeweiligen Programm für eine Art entscheiden?



  • mach doch einfach:

    readline(Variable,',' , ',')
    //Das in der Mitte ist das  normale Komma ;)
    //Die anderen sind die Kommas als Argumente, die das Einlesen beschränken sollen
    

    Dass machst du dann mehrmals hintereinander, dann hast du's 😉

    Und um alles in der Konsole zu löschen:

    void clrscr()
    {
      COORD coordScreen = { 0, 0 }; 
      DWORD cCharsWritten; 
      CONSOLE_SCREEN_BUFFER_INFO csbi; 
      DWORD dwConSize; 
      HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); 
    
      GetConsoleScreenBufferInfo(hConsole, &csbi); 
      dwConSize = csbi.dwSize.X * csbi.dwSize.Y; 
      FillConsoleOutputCharacter(hConsole, TEXT(' '),
                                 dwConSize, 
                                 coordScreen,
                                 &cCharsWritten); 
      GetConsoleScreenBufferInfo(hConsole, &csbi); 
      FillConsoleOutputAttribute(hConsole,
                                 csbi.wAttributes,
                                 dwConSize,
                                 coordScreen,
                                 &cCharsWritten); 
      SetConsoleCursorPosition(hConsole, coordScreen); 
    }
    

    Einfach kopieren und aufrufen 😉



  • Herzlichen Dank! Ich habe das ganze natürlich sofort ausprobiert aber ich habe ein kleines Problem.
    Mag sein das die Frage blöd klingt :), aber muss ich noch irgendeine Library hinzufügen damit das ganze funktioniert? Ich habe nämlich einen Funktionsprototypen vor main() erstellt und nach main() den Code eingefügt. Der Compiler sagt allerdings COORD (und wie die alle heißen) sei ein nichtdeklarierter Bezeichner.
    Wo wir gerade bei Libraries sind, muss auch für dieses readline eine bestimmte Library gefordert?



  • [EDIT]HERZINFARKT GEFAHR, ALLES WEGEDITIERT[/EDIT]



  • Sorry,
    du brauchst nur conio.h.
    Ein Beispiel:

    #include <conio.h>
    #include <iostream>
    using namespace std;
    
    int main(){
    int Text=0;
    while(Text<=1000){
    cout << "Text"<<endl;
    Text++;
    }
    
    system("cls");
    
    getch();
    
    return 0;
    }
    

    cu max



  • @Master_Max: Editier die erste Code-Zeile von deinem ersten Beitrag schnell weg! Wenn SideWinder das sieht, steht er wieder kurz vorm Herinfarkt.



  • Danke.(Was war den Falsch 😕 ?)



  • wenn man void clrscr() benutzt möchte braucht man einfach nur die windows.h library und dann funktioniert es.

    Danke an alle für eure Hilfe!



  • Herzinfarkt war ein bisschen übertrieben, aber hier hab ich auch system("cls") vorgeschlagen und er war nicht gerade begeistert.



  • was side meint, wird hier deutlicher

    http://www.c-plusplus.net/forum/viewtopic.php?t=50302&highlight=system

    für kleine lernprogramme nur eben mal für zuhaus ist es egal, nur wenns mal mehr wird, vielleicht sogar mal irgendwann im arbeitszusammenhang, ein paar gedanken dazu machen und system nicht verwenden.

    lieber auf api funktionen zurückgreifen.

    so long



  • Welche der beiden Versionen um den Bildschirm zu löschen funktioniert unter windows UND linux?



  • @djarin: Keine. Die gute Variante mit den API-Aufrufen ist natürlich Win-Only. Und die zweite system-Lösung scheitert wahrscheinlich daran, dass in Unix das Eingeben von cls nichts bewirkt.

    MfG SideWinder



  • Hab ich auch vorhin gemerkt! Tut mir leid!
    Wie kann ich es einstellen, dass die Konsole von anfang an minimiert gestartet wird?



  • djarin schrieb:

    Hab ich auch vorhin gemerkt! Tut mir leid!
    Wie kann ich es einstellen, dass die Konsole von anfang an minimiert gestartet wird?

    in der verknüpfung auf deine dos-anwendung kann man unter eingenschaften => ausführen auf "minimiert" setzen.



  • Wer es ausprogrammieren will und sich nicht auf die Nettigkeit seiner User stützen will schaut dazu am besten mal in der Konsolen-FAQ nach!

    MfG SideWinder



  • Hi, ich bins nochmal! 🙂

    Ich hatte noch keine Zeit mich mit readline weiter zu beschäftigen. Jedenfalls habe ich mich vorhin nochmal damit beschäftigt und auch in der MSDN nachgeschaut, aber ich finde die für readline zuständige Library einfach nicht. 🙄



  • Es gibt kein readline()?!

    MfG SideWinder



  • Sicher, ich habe nämlich selber auch was über ein readline gelesen nur eben nichts über die Library.
    Geben es denn sonst noch eine Möglichkeit mehrere (Integer) Variablen in einer Zeile einzugeben?


Anmelden zum Antworten