Programm funktioniert nur beim Debugen



  • Enitin schrieb:

    Warum sollte das Programm überhaupt einfach stehenbleiben?

    Weil im Code steht, dass es auf eine Eingabe warten soll. Dass du eine Eingabe machst, steht in deiner Fehlerbeschreibung jedenfalls nicht drin, also ist es erst mal nicht weiter verwunderlich, dass das Programm an dieser Stelle stehenbleibt.



  • Enitin schrieb:

    Das Programm startet sich zwar aber es funktioniert nicht so wie ich es möchte.

    wie möchtest du es denn?
    der quellcode sieht so zwar alles andere als schön aus, aber der macht eigentlich was er soll, so sehe ich das



  • Schau mal was Du als Code gepostet hast.
    [cpp]
    cout << "Examples:" << endl;
    cout << "Link = enitin.co.de" << endl;
    cout << "IP = 127.0.0.1\n" << endl;
    cout << "Link/IP: ";
    cin >> IP;
    [/cpp]

    Du scheinst Deinen "eigenen" Code nicht zu kennen. 😕

    Wozu 2x system?
    system ruft einen Kommandointerpreten als eigenen Prozess auf. Als o machst Du ein Clearscreen in einem Konsolenfenster und ruftst das Ping in einem zweiten auf. Ansonsten such mal hier im Forum nach einen Thread über systems.
    Wozu goto?
    Ein while mit Abbruchbedingung ist schöner, da man dann das Programm sauber beenden. goto ist in 99% aller Fälle ein Zeichen, das der Schreiber des Programms nicht sonderlich gut programmiert sprich keine Idee vom Programmfluß hat. Siehe meinen Link.

    Das Programm funktioniert im Debug und Release.
    Was nicht funktioniert ist Dein Verständnis des Programms. 😉



  • noergel ich muss dich auf einen Fehler deinerseits hinweißen. Du hast das hier geschrieben: "Das sollte keinen wundern und erst recht nicht den Programmschreiber, da im Quälcode cin >> "Link/IP" steht." Und nicht "cin >> IP;". Aber der Befehl

    goto
    

    führt ja nach das

    cin >> IP;
    

    also kann es doch garnicht dort anfangen. Oder? Natürlich sehe ich ein das mein Code wirklich schlecht geschrieben ist das aber auch daran liegt das ich noch ein totaler Anfänger bin. 😉 Du scheinst dich ja gut auszukennen also schreib mir doch mal wie du das Programm machen würdest. Natürlich währe es auch noch gut wenn du alles Anfängergerecht erklären könntest.



  • Oh je 🙄
    Du kommst erst gar nicht in Deine Endlosschleife.
    cin >> IP bedeutet das das Programm am Eingabeprompt einen Wert erwartet und diesen dann in IP speichert. Das Programm warte am Prompt auf eine Eingabe, deshalb siehst Du nämlich nur Link/IP:_ (blinkender Unterstrich). Sobald Du irgendetwas eingibst, geht es weiter in die Endlosschleife. Ist der Wert falsch (4711.4712.4713.0) oder Blödsinn (z.B. Hurra) wird troztdem endlos das Ping aufgerufen.
    Es fehlt ein Überprüfung der Eingabe und wie schon gesagt ein kontrollierbarer Abbruch.
    Kleiner Tip nimm Dir eine Buch oder Tutorial und erarbeit Dir die Grundlagen in C++ und Programmierung.
    Buchempfehlungen und Tutorials gibt es hier auf der Seite.



  • Bei mir funktioniert dein Programm auch. Sicher, dass du genau den Code verwendest, den du hier gepostet hast?



  • _matze ich bin mir sicher weil ich ihn kopiert habe. 😉 Außerdem habe ich doch gesagt wenn ich es Debuge funktioniert es aber wenn ich es einfach so ohne Compiler und sonstiges starte funktioniert es nicht mehr. noergel ich habe mir schon ein Buch geholt und werde es auch weiterhin lesen. Und ich weiß das ich bei IP etwas eingeben muss. (Mit Abbruchfunktion usw wollte ich noch warten weil es ja bis jetzt noch nicht funktioniert und es den Code einfach noch unübersichtlicher macht.) Aber wie schon gesagt wenn ich die IP eingebe sollte er doch eigentlich den Ping herausfinden und es immer wiederholen.



  • Enitin schrieb:

    Und ich weiß das ich bei IP etwas eingeben muss.

    Dann beschreibt nochmal genau wie das Ergebnis aussieht dass du bekommst.
    uU nimm das system("cls") weg, falls du dir einfach immer nur den Bildschirm löscht.



  • Enitin schrieb:

    _matze ich bin mir sicher weil ich ihn kopiert habe. 😉 Außerdem habe ich doch gesagt wenn ich es Debuge funktioniert es aber wenn ich es einfach so ohne Compiler und sonstiges starte funktioniert es nicht mehr.

    Und genau das kann ich nicht nachvollziehen. Bei mir funktioniert auch die Release-exe.



  • Also wenn ich das

    system("cls");
    

    weglasse es einfach aus dem Ordner heraus öffne und "Link/IP" eingebe dann gibt er mir das aus:

    Testing ping...
    Examples:
    Link = enitin.co.de
    IP = 127.0.0.1

    Link/IP:

    Anders wird es ausgegeben wenn ich es Debuge:

    Testing ping...

    Ping wird ausgeführt für enitin.co.de [78.46.83.12] mit 32 Bytes Daten:
    Antwort von 78.46.83.12: Bytes=32 Zeit=60ms TTL=57
    Antwort von 78.46.83.12: Bytes=32 Zeit=56ms TTL=57
    Antwort von 78.46.83.12: Bytes=32 Zeit=53ms TTL=57
    Antwort von 78.46.83.12: Bytes=32 Zeit=63ms TTL=57

    Ping-Statistik für 78.46.83.12:
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
    (0% Verlust)
    Ca. Zeitangaben in Millisek.:
    Minimum = 53ms, Maximum = 63ms, Mittelwert = 58

    Ping will be tested again in 5 seconds for enitin.co.de.



  • Könntest du bitte mal die vollständige Ausgabe posten? Du fängst hier immer mit "testing ping" an. Da passiert doch vorher schon einiges (inkl. Eingabe).



  • Enitin schrieb:

    Also wenn ich das

    system("cls");
    

    weglasse es einfach aus dem Ordner heraus öffne und "Link/IP" eingebe

    Wo gibst du "Link/IP" ein?

    Enitin schrieb:

    Anders wird es ausgegeben wenn ich es Debuge:

    Testing ping...

    ...

    Ping will be tested again in 5 seconds for enitin.co.de.

    Im Debugemode gibst du "enitin.co.de" ein.
    Gib das mal im Releasemode auch ein.

    gruß
    stalker



  • Wahrscheinlich hat er zwei verschiedene Programme und sollte mal jeweils, für Release- und Debug-Modus, neu builden.



  • Mein Gott ist das so unverständlich? 😃 Noch mal...
    Das wird ausgegeben wenn ich das Programm im Release oder Debug Modus starte:

    Examples:
    Link = enitin.co.de
    IP = 127.0.0.1

    Link/IP:

    Dann wenn ich "enitin.co.de" im Release oder Debug Modus eingebe kommt:

    Testing ping...

    Ping wird ausgeführt für enitin.co.de [78.46.83.12] mit 32 Bytes Daten:
    Antwort von 78.46.83.12: Bytes=32 Zeit=60ms TTL=57
    Antwort von 78.46.83.12: Bytes=32 Zeit=56ms TTL=57
    Antwort von 78.46.83.12: Bytes=32 Zeit=53ms TTL=57
    Antwort von 78.46.83.12: Bytes=32 Zeit=63ms TTL=57

    Ping-Statistik für 78.46.83.12:
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
    (0% Verlust)
    Ca. Zeitangaben in Millisek.:
    Minimum = 53ms, Maximum = 63ms, Mittelwert = 58

    Ping will be tested again in 5 seconds for enitin.co.de.

    Aber wenn ich es jetzt aus dem Ordner öffne kommt:

    Examples:
    Link = enitin.co.de
    IP = 127.0.0.1

    Link/IP:

    Wenn ich nun "enitin.co.de" eingebe kommt:

    Testing ping...
    Examples:
    Link = enitin.co.de
    IP = 127.0.0.1

    Link/IP:



  • Wie siehts denn aus, wenn du an Stelle des goto eine while-Schleife verwendest?



  • Das Programm funktioniert auch, wenn man es Standalone aus irgendeinem Verzeichnis aufruft.

    Dein Problem:
    1. Du weißt nicht was Du tust. Siehe Dein Reaktion auf cin >> IP
    2. Du arbeitest mit einem anderen als der hier geposteten Src.
    Zuerst lief es nur im Debug aber nicht im Release. Nun in Release/
    Debug von der IDE aus, aber Standalone nicht.

    Es ist ziemlich konfuse.



  • Also noergel... Du hast einen Fehler gemacht nicht ich. Lies bitte noch eimal genau. 😉 Wie oft soll ich es eigentlich noch sagen? Ich habe gesagt das es im Debug und Release Modus funktioniert aber nicht von Ordner aus. Und ich bin mir zu 100% sicher das es dieser Code ist weil ich ihn kopiert habe und noch zur sicherheit durchgelesen habe. Und pumuckel: Ich habe schon gesagt das der Code schlecht ist und wenn ich jetzt noch etwas verändere würde das nur noch verwirren. 🙂 Soll ich ein Video machen und es auf YouTube stellen? Ihr könnt euch selber überzeugen wenn ihr wollt.



  • Ich tippe mal, dass mit dem goto da was nicht stimmt. Warum willst du das denn partout nicht rausnehmen?



  • Du bist ja ganz schön beratungsresistent. Über das goto wurde ja schon genug gesagt. Aber ich verstehe die Zeile "system(("ping " + IP).c_str());" nicht. Was soll die schließende Klammer nach IP?
    Gruß



  • Hab ich ja schon versucht aber es geht nicht... Macht mir doch jetzt bitte mal ein Codebeispiel. Dann würde ich bemerken was ich falsch gemacht habe.


Anmelden zum Antworten