Dev-C++ Fenster blinkt nur kurz auf???



  • ich habe ein ähnliches prbolem, ich habe sidewinder deswegen auch schon eine emeil geschrieben...

    ich habe jedoch vorher mal in die faq gekuckt und die lösung angewandt

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        cout << "Special Flaechenprogramm\n";
        cout << "Gib Laenge und Breite ein\n";
        int laenge;
        cin>>laenge;
        int breite;
        cin>>breite;
    
        int flaeche=laenge*breite;
        cout << endl << flaeche;
    
        cin.clear();    
        cin.ignore(cin.rdbuf()->in_avail());  
        cin.get();  
        return 0;
    }
    

    hierbei schließt sich das fenster auch, aber mur wenn man das programm mit dev-c++ (mingw 3.3.1) kompiliert. mit dem vc++ toolkit gehts hingegen einwandfrei



  • schaut hier eigentlich nie jemand in die FAQ??
    alle paar tage kommt son post.

    @|23| du solltest dir mal den standard anschauen 😉
    #include <iostream>
    using namespace std
    int main
    return 0
    .



  • ich habe jedoch vorher mal in die faq gekuckt und die lösung angewandt

    🙄



  • Man sollte nicht die user beschimpfen. Das zeugt von nutzloser Arroganz. Das Problem ist der Wandel der Sprache C++ und der Compiler in der zweiten Hälfte der 90er Jahre.



  • @traffic:
    Ich denke du meinst mich.
    Also:
    1. der Compiler ist unschuldig :
    Wenn du ein Programm für die Kommandozeile schreibst dann wird dieses Programm als Kommandozeilenprogramm unbrauchbar wenn du so Dinge wie
    system("pause"), oder getchar() am Ende einfügst. ( Ausgabeumleitung funktioniert dann nicht mehr richtig ).
    2. Das Betriebsystem ist unschuldig :
    Das Betriebsystem macht nur was es mit anderen Programmen auch macht. Wird ein Programm gestartet werden ein oder mehrere Fenster geöffnet, sobald das Programm beendet ist werden die Fenster wieder geschlossen.
    3. Bleibt nur mehr der Benutzer :
    Dieser sollte wissen das Kommandozeilenprogramme auch von der Kommandozeile gestartet werden sollten.
    BTW mir ist bewusst des heute viele Möchtegern-Programmierer gibt die nicht einmal wissen was eine Kommandozeile ist, geschweige denn Ein-/Ausgabeumleitung.
    Kurt



  • @aoeu: ich weiß ich bin manchmal dumm 😃
    @ZuK: traffic meint uns beide. obwohl ich nicht geschimpft habe (siehe 😉 smiley)



  • muhkuhmasta schrieb:

    hierbei schließt sich das fenster auch, aber mur wenn man das programm mit dev-c++ (mingw 3.3.1) kompiliert. mit dem vc++ toolkit gehts hingegen einwandfrei

    Jaja, die ganzen Streaming Sachen sind nicht ganz einfach. Ein

    cin.sync();
    cin.get();
    

    am Ende des Programms sollte hier helfen.



  • Möchtegern-Programmierer

    @Möchtegern-Programmierer: Lasst euch nicht entmutigen.

    Zunächst aktuellen Compiler beschaffen, der den C++-Standard (1998) befolgt.

    return 0 macht bezüglich des Rückgabewertes der Funktion main() vom Typ int Sinn, ist aber heute nicht wirklich notwendig(!), da moderne Compiler dies gemäß C++-Standard automatisch erledigen. Viele Progger mögen dennoch diese klassische Abschlusszeile.

    Aktuelle header beachten, also nicht #include <iostream.h>, sondern #include <iostream>. Dafür muss man sich um den Zugang zum namespace std kümmern. Da stecken diese Sachen nämlich alle drinnen. Also entweder std::cout oder besser öffnen mit using namespace std. Die alten C-Header sind da heute auch mit drinnen, dann wird aus math.h cmath, aus string.h cstring etc.

    <string> ist nicht string.h der Sprache C, sondern die C++-String-Klasse!

    Dann bleibt da noch die Geschichte mit dem Schließen des Konsolenfensters unter MS Windows (Unter Linux startet man in der Konsole mit ./name, das geht natürlich auch unter MS Windows direkt in der "DOS-Box"). Es gibt es die Möglichkeit des Pausierens mit conio.h und getch(), die ziemlich einfach ist. Unter Linux gibt es diese conio.h allerdings nicht, daher lehnen viele diesen Non-Standard-Header ab, aus Sicht der Standardisierung wohl zurecht. Also bleibt nur die eigene Funktion wait(). Hier die ausführliche Variante zum besseren Verständnis

    #include <iostream>
    
    void wait()
    {
        std::cin.clear();
    
     // std::cin.ignore( std::cin.rdbuf()->in_avail() ); 
        std::streambuf * pbuf = std::cin.rdbuf();
        std::streamsize size  = pbuf->in_avail(); 
        std::cin.ignore(size);
    
        std::cin.get();
    }
    
    int main()
    {
        //...
        wait();
    }
    

    In einem anständigen Tutorial oder Buch sind diese Dinge klar gestellt.
    http://www.cpp-tutor.de/cpp/toc.htm





  • 🕶 schrieb:

    Möchtegern-Programmierer

    @Möchtegern-Programmierer: Lasst euch nicht entmutigen.

    Ich möchte hier niemand entmutigen. Etwas mehr Selbständigkeit wäre jedoch angebracht. Denn dieses Thema (Hilfe mein Program binkt nur kurz auf.) kommt scheinbar mehrfach die Woche.
    @🕶 mit einer kleinen Änderung könnte ich mit deiner funktion wait() ganz gut leben.

    void wait()
    {
    #ifdef DEBUG
        std::cin.clear();
    
     // std::cin.ignore( std::cin.rdbuf()->in_avail() ); 
        std::streambuf * pbuf = std::cin.rdbuf();
        std::streamsize size  = pbuf->in_avail(); 
        std::cin.ignore(size);
    
        std::cin.get();
    #endif
    }
    

    Hoffentlich habe ich mit meinem Statements niemand beleidigt, das war ganz bestimmt nicht meine Absicht.
    Kurt



  • Diesen Post gab es schon mindestens 100mal. Wie wärs ihn in die FAQ zu verschieben?

    MfG CSS



  • also ich habe ds gleiche problem, und habe auch alls probiert ws ihr geschrieben habt... aber es geht nicht, manchmal kommt ne meldung mit qwelldatei ist nicht kompiliert oder ds prog geht auf und dann gleich wieder zu... 😕 😕 hab keine ahnung ws ich noch machen soll...



  • normalerweise wenn du getch benutzt hast du keine probleme. nichtmal mit Dev-Cpp 🤡



  • getch() gehört zu conio.h. Diese Biliothek ist nicht Standard. Daher ist die Methode mit einer eigenen protablen wait-Funktion besser geeignet.



  • #include <iostream.h>
    #include <conio.h>
    void main()
    {
    cout<<"Hello, world!"<<endl;
    getch();
    }

    also wenn ich ds eingebe kommt nur ne fehlermeldung mit die Qwelldatei ist nicht kompiliert... 😞



  • cxpo schrieb:

    also wenn ich ds eingebe kommt nur ne fehlermeldung mit die Qwelldatei ist nicht kompiliert... 😞

    Wundert mich auch nicht, der Code ist falsch. Lies dir Seite 1 nochmal durch, und du wirst fündig.



  • #include <iostream> 
    using namespace std; 
    
    int main() 
    { 
        cout << "Hello, world!" << endl; 
        cin.get(); 
        return 0; 
    }
    

    ahh sry... also damit klappt es...
    danke nochmals



  • Seht doch in dei Konsolen-FAQ. SideWinder hat dort einen Support Beitrag verfasst.

    MFG CSS



  • #include <iostream>
    
    const char NL = '\n';
    
    void wait()
    {
            std::cin.clear();
            std::streambuf * pbuf = std::cin.rdbuf();
            std::streamsize size  = pbuf->in_avail();
            std::cin.ignore(size);
            std::cin.get();
    }
    
    int main()
    {
        std::cout << "Hello, world!" << NL; 
        wait();
    }
    

Anmelden zum Antworten