Frage zum Konsolen Puffer



  • Hallo woher weiss ich wie viel Text schon auf meine Konsole geschrieben wurde?

    Wenn hier jetzt z.b. 5000 Zeichen auf der Konsole ausgeben wurden, dann würde ich gerne den Konsole Puffer vergrößern hat wer eine Ahnung wie das geht?

    #include <iostream>
    #include <windows.h>
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    
    CONSOLE_SCREEN_BUFFER_INFO info;
    
    GetConsoleScreenBufferInfo(
    GetStdHandle(STD_OUTPUT_HANDLE), &info);
    
    cout<<info.dwSize.X << endl; // Gibt aus  80
    cout<<info.dwSize.Y << endl; // Gibt aus 300
    
    for(int i=0;i<7000;i++)
    {
    cout<< i <<endl; 
    
    }
    
    GetConsoleScreenBufferInfo(
    GetStdHandle(STD_OUTPUT_HANDLE), &info);
    cout<<info.dwSize.X << endl; // Gibt aus 80
    cout<<info.dwSize.Y << endl; // Gibt aus 300
    
    system("PAUSE");
    }
    


  • ein blick in die MSDN nach GetConsoleScreenBufferInfo und ich hab alles gefunden was dein Herz begehren könnte...

    ich denke du suchst SetConsoleScreenBufferSize

    und anbei...
    hier noch der gesammtüberblick an Console Funktionen....



  • Ich glaube ReadConsoleOutputCharacter ist das was ich suche, aber irgendwas mache ich da wohl falsch. Denn charsread gibt immer 0 aus. Wo ist hier mein Fehler? Ich finde ihn nicht.

    #include <iostream>
    #include <windows.h>
    #include <vector>
    using namespace std;
    
    int main()
    {
    
    char buf[20];
    DWORD len =20;
    DWORD charsread=0;
    COORD coord;
    
    CONSOLE_SCREEN_BUFFER_INFO info;
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &info);
    
    coord.X= info.dwSize.X;
    coord.Y= info.dwSize.Y;
    
    cout<<"output abcdef"<<endl;
    ReadConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), buf, len, coord, &charsread );
    
    cout<< "Zeichen auf Konsole[Kann atm max 20 lesen]: "<<charsread<< endl;
    
    return 0;
    }
    


  • DerBanause schrieb:

    Hallo woher weiss ich wie viel Text schon auf meine Konsole geschrieben wurde?

    Das wirst Du selber mitzählen müssen. Der Konsolenpuffer ist ja immer vollständig mit Zeichen gefüllt, zu Beginn, wenn Du die Konsole öffnest, stehen halt überall Blanks drin. Nun machst Du ein paar Ausgaben auf die Konsole, die zB Buchstaben, Ziffern aber auch wiederum Blanks - eventuell auch mal ganze Leerzeilen - enthalten. Jetzt steht zwar eine Anzahl von Blank abweichender Zeichen im Konsolenpuffer, aber wie willst Du zum Beispiel feststellen, wenn die letzten drei Zeilen leer sind, ob Du sie noch nicht beschrieben hast, oder ob Du vielleicht am Schluss Deiner letzten Ausgabe noch ein oder zwei Leerzeilen ausgegeben hast und die Leerzeilen im Puffer so Teil Deiner Ausgabe sind?



  • DerBanause schrieb:

    Hallo woher weiss ich wie viel Text schon auf meine Konsole geschrieben wurde?

    ich denke das auslesen des console puffers geht über die pipes...

    kuck dir mal folgendes beispiel an

    Execute a Console ...



  • mit ReadConsole kannst Du die Eingaben lesen.


Anmelden zum Antworten