Problem mit der Ausführung einer Funktion - ruft sich selber auf wo nichts ist ...

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von jan99.

    Problem mit der Ausführung einer Funktion - ruft sich selber auf wo nichts ist ...

    Moin!

    ich habe eine Funktion MarkObjektSchnitteBogen die in der Zeile 4516 aufgerufen wird.

    Der Debugger springt dann in 4517 und beim nächsten F8 wieder in 4516.

    Das läuft bis zu einem Fehler immer wieder durch... 25829 mal <X



    Dei roten Haltepunkte werde nicht erricht.

    Was ich merkwürdig finde ist die Tatsache, dass in 4517 nicht die Zeile 4516 aufgerufen wird.

    Eine Projektbereinigung und neu erstellen hat nicht weitergeholfen.

    Hat einer eine Idee?

    Gruß Jan

    jan99 schrieb:

    Was ich merkwürdig finde ist die Tatsache, dass in 4517 nicht die Zeile 4516 aufgerufen wird.
    Da hast Du wohl einen Zahlendreher.
    Du hast da einen rekursiven Aufruf, der zu einem StackOverflow führt.
    Mach mal einen Haltepunkt in Zeile 4517.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Welche Funktion soll denn in Zeile 4519 aufgerufen werden?
    Die Funktion MarkObjektSchnitteBogen in Zeile 4516 oder die Funktion MarkObjektSchnitteBogen in Zeile 4528. Die beiden Funktionen haben m.E. die gleiche Ausprägung und sind somit NICHT Überladen.

    Meines Erachtens hast Du da einen Endlosloop auf die Funktion in Zeile 4516 gebaut.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Moin!

    erst einmal Danke für die Rückmeldungen.

    @Inopiae: Es soll in 4519 die Funktion 4528 aufgerufen werden.

    Die beiden Funktion "MarkObjektSchnitteBogen" haben zwar die identischen Namen, aber einmal werden Point3d und einmal Point2d übergeben.

    Das sollte doch eigentlich als Unterscheidung ausreichen - oder?

    @Gonger: Deine Anmerkung verstehe ich gar nicht oder kann ich nicht nachvollziehen.

    Gruß Jan

    RodFromGermany schrieb:

    Mach mal einen Haltepunkt in Zeile 4517.
    Hätte ich auch ignoriert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Du sagst er kommt nie bis zur Zeile 4518. Das heißt: in Zeile 4517 wird rekursiv die Funktion wieder aufgerufen. In dieser Zeile ist halt nur der Konstruktor von Point2d und zwei Properties von Point3d. Irgendwo da muss die Funktion aufgerufen werden.