Wo liegt der Fehler?! Wer kann mir helfen?



  • BitWax hat einen Fehler gemacht. Er sagte, dass du strcmp verwenden sollst. Das wurde aber von mir und The-Kenny bereits korrigiert. Also ➡ nochmal lesen.

    BitWax schrieb:

    Und std::string ist sinnlos, da er using namespace std; gemacht hat.

    Ich nutze fast nie using namespace std. Deshalb schreibe ich immer std::string 😉

    Gruß
    Don06



  • Also erstmal: Ein Fehler wenn man mit string arbeitet. Aber ja, ein Fehler.

    Don06 schrieb:

    BitWax schrieb:

    Und std::string ist sinnlos, da er using namespace std; gemacht hat.

    Ich nutze fast nie using namespace std. Deshalb schreibe ich immer std::string 😉

    hmmm, mir ist das zuviel, unnötige Schreibarbeit (wobei ich sowas aus der WinAPI gewohnt bin)



  • Ich bezog mich auf diesen Beitrag:

    BitWax schrieb:

    Also: includiere den Header "string". Anschließend statt "char passwort[8];" schreibe "string passwort". Und dann in der if-Anweisung nicht 'passwort == "bla"' sondern "strcmp (passwort, "bla") == 0"

    Du hast nur vor mir gepostet 😉

    Gruß
    Don06



  • Ja, dachte ich mir schon. Aber irgendwie haben wir beide den Thread gerade übernommen (?). Oder er ist so fertig von dem Zeug das er sich...nun...schlafen gelegt hat 🙂



  • Ah!!! Okay! Jetzt wird mir alles klar....

    Es gehts! JUHU!!!!

    DANKE AN ALLE DIE GEHOLFEN HABEN!

    Ich hab wieder einiges dazu gelernt!

    Ich habe die Video2Brain DVD mit Helge Maus. Dort bin ich gerade dabei mir Funktionen mit Rückgabewerten anzusehen...

    Zeiger, Referenzen... kommt alles noch!

    Wie ihr seht bin ich echt noch am Anfang, sodass solche "kleinen" Fehler passieren können! (finde ich zumindest)

    Das mit den Strings sind wieder solche "Kleinigkeiten", das erwähnen die im Video gar net... daher bin ich sehr erfreut über die Infos mit den Überschreiben etc...

    Parallel will ich mal gucken wie das erstellen optischer bzw grafischer Flächen mit C++ geht... da hör ich immer WinAPI und GUI... kp was das ist und wie man das lernen kann... keinen Bock mehr auf diese Konsolenanwendungen!^^

    Wenn jemand tolle Links oder so hat, kann sie ja mal per KN oder so schicken!

    Nochmal danke für eure Hilfe!



  • Lass die GUI-Programmierung ersteinmal am Rand liegen. Das weiß ich aus Erfahrung. Ich konnte noch nichteinmal richtig C++, da habe ich schon mit Fenstern angefangen. War extrem schwierig...musste erst nocheinmal richtig in C++ rein, und dann ging es halbwegs.



  • Ich will ja hier nicht vom Thema oder ins falsche Thema ablenken, aber was ist GUI und WiNAPI?!

    Für was bruahc ich das?! Wo kann ich es lernen?! Wann kann ich damit anfnagen?!



  • GUI = Graphical User Interface = Grafische Benutzeroberfläche = Fenster, etc.

    Anfangen: sobald du sicher in C++ bist
    WinAPI = Schnittstelle, um über C/C++ Fenster zu erstellen
    Wo: Hmm, einfach mal im I-Net und hier in der SuFu suchen



  • BitWax schrieb:

    GUI = Graphical User Interface = Grafische Benutzeroberfläche = Fenster, etc.

    WinAPI = Schnittstelle, um über C/C++ Fenster zu erstellen

    Das klingt verdammt gleich!

    Naja! Ich erkundige mich mal genauer!

    Jetzt sehe ich mich mal nach den system("PAUSE"); um....
    Das soll gar nicht mal so gut sein! hab hier im Forum mal was von nem Moderator drüber gelsen! Ich geh mal suchen!^^

    Mal sehen was man lernen kann!^^

    Danke für Eure Hilfe!

    Hat mir Spass gemacht! 😃



  • Ich habe dir zu system ("PAUSE") etwas geschrieben.

    und zur GUI und WinAPI, es hört sich gleich an, weil es ähnlich ist. GUI sind eben Fenster etc. und mit der WinAPI kannst du Fenster erstellen.



  • Achso! Da liegt der unterschied!^^

    Ich habe das schon gelesen mit dem System("PAUSE") aber ich will richtuige infos... warum ist das andere besser? Was muss ich beachten?! Wie setzt ich es richtig ein.... verstehste!^^

    Dennoch danke dafür! 😃



  • Du setzt es so ein, wie ich es auf irgendeiner Seite geschrieben habe, naja und wegen den W-Fragen, da musst mal gucken^^



  • Tatsächlich ist soetwas wie System("PAUSE") garnicht nötig.
    Konsolenprogramme sind dazu da, aus der Konsole aufgerufen zu werden. Dort bleibt der Text sowieso erhalten.
    Bei Visual C++ kannst du mit "Starten ohne debuggen" ein Schließen der Konsole verhindern. Wenn du debuggst hast du wahrscheinlich eh irgendwo einen Haltepunkt angegeben, davon geht M$ jedenfalls aus. Bei anderen IDEs wie Code::Blocks gibts ähnliche Optionen.

    Gruß
    Don06



  • Das sag aber mal dem Endbenutzer, dass er das Programm anstatt mit einem einfachen Doppelklick erst aufwendig in der Konsole öffnen muss.



  • Einem Endnutzer würde ich nie ein Konsolenprogramm anbieten, außer es solle ein Konsolenprogramm sein und dann soll es ebend aus der Konsole aufgerufen werden 😉



  • Also ich schreibe Serverprogramme (z.B. von Spielen) allgemein in Konsole und biete die dann auch so an 🙂
    Sobald Chat o.ä. hinzukommt, ist WinAPI gefragt 🙂
    Aber meine Programme sind auch darauf ausgelegt, sich nicht zu schließen, wenn alles erledigt ist.



  • BitWax schrieb:

    Aber meine Programme sind auch darauf ausgelegt, sich nicht zu schließen, wenn alles erledigt ist.

    Richtig! Seh ich auch so!

    cin.clear ();
        cin.ignore (cin.rdbuf ()->in_avail ());
        cin.get ()
    

    Hier wird aber geschlossen! 😞



  • BitWax schrieb:

    Achso, anstatt Sytem Pause würde ich eine wait-Funktion verwenden

    #include <cstdlib>
    #include <iostream>
    using namespace std;
    
    void wait ()
    {
        cin.clear ();
        cin.ignore (cin.rdbuf ()->in_avail ());
        cin.get ();
    }
    
    int main()
    {
        .
        .
        .
        wait ();
        return 0;
    }
    

    hast du das so gemacht? bei mir schließt sich das nicht, bevor ich enter gedrückt habe.



  • Bei mir siehts gerade so aus:

    #include <cstdlib>
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    void wait();
    
    int main()
    {
      string passwort;
    
      cout << "Hallo!" << endl;
      cout << endl;
      cout << "Bitte geben sie Ihr Passwort ein: ";
    
      cin >> passwort;
    
      if(passwort == "bla")
      {
        cout << "Moin!";
      }  
    
      else 
      {  
        cout << "Falsches Passwort!" << endl;
      }  
    
      wait ();	
      return 0;
    }
    
    void wait ()
    {
        cin.clear ();
        cin.ignore (cin.rdbuf ()->in_avail ());
        cin.get ();
    }
    

    Diese Variante, sowie deinen eben funkt net! Das Fenster wird von allein geschlosssen!

    Wenn ich noch ein cout in die void wait hineinsetzte... obs dann klappt...



  • Du hast natürlich Recht, dass es auf die Situation ankommt. Aber so ein Programm wird sich doch in einer Schleife befinden, von daher sollte ein abschliessendes Warten unnötig sein. Man lässt die Schleife einfach erst dann aufhören, wenn das Programm beendet werden soll.

    Ich würde es zB hassen wenn ich gerade etwas über Kommandozeile kompiliere:

    g++ [options]
    

    und dann das Ganze noch mit Enter bestätigen müsste und nicht gleich weiter machen kann. zB das erstellte Programm testen. Da ich sowieso in der Konsole bin würde mich es ernuet nerven, wenn ich das Beenden des Prgrammes noch mit Enter bestätigen müsste.
    Ich denke, dass das Schliessen der Konsole irgendwie überbewertet wird. Wenn man seinen Browser mit einem Klick auf das X schliesst, will man doch nicht das eine Dialog-Box kommt wo drin steht: "Drücken sie Enter um das Programm zu beenden" 😃

    Naja, du siehst sicherlich, was ich meine.

    Gruß
    Don06


Anmelden zum Antworten