Announcement

Collapse
No announcement yet.

Ausführung mehrerer Methoden je nach Bedingung abbrechen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ausführung mehrerer Methoden je nach Bedingung abbrechen

    Hy,

    ich möchte einen Abbruch für eine komplettes Fenster erreichen ohne immer einen Merker in jeder einzelnen Funktion zu setzen.

    D. h. Bei bestimmten Prüfungen in den Funktionen, will ich, dass der Code abgebrochen wird und ich praktisch wieder von Vorne den Code durchlaufen muss ohne, dass ich immer einen Merker benutzen müsste.

    Beispiel:

    Ich habe eine Eingabemaske mit Adressdaten und Kalenderdaten (von - bis). Die Daten sind eingetragen aber die Kalenderdatenprüfung ergibt, dass das von-Datum zu weit in der Vergangenheit liegt.

    An dieser Stelle soll der ganze Code angehalten werden und zurückgesetzt werden.

    bei "return;", wird nur innerhalb der Funktion angehalten, leider nicht für den ganzen nachfolgenden Code.

    Gibt es einen vergleichbaren Befehl, der aber komplett abbricht??

    Vielen Dank im Voraus.

    Lerando
    Zuletzt editiert von gfoidl; 27.06.2011, 18:58. Reason: Titel angepasst

  • #2
    Verstehe das Problem nicht. Wenn du eine Serie von Prüfungen hast, dann schreibe diese in eine Methode. Schlägt eine davon fehl, verlasse die Methode. Liefere einen Fehlercode zurück und gibt entsprechende Meldungen aus. Sehe jetzt da nichts, wo Code angehalten werden muss? oder Code zurückgesetzt? werden muss.

    Der Aufruf der Methode erfolgt immer dann, wenn die Eingabe verarbeitet werden soll. Als Beispiel wenn der Anwender auf "ok" drückt. Zu unterscheiden von einer Eingabevalidierung an den Eingabefeldern, die nur bestimmte Zeichen zur Eingabe zulässt.
    Christian

    Comment


    • #3
      Verstehe das Problem nicht. Wenn du eine Serie von Prüfungen hast, dann schreibe diese in eine Methode. Schlägt eine davon fehl, verlasse die Methode. Liefere einen Fehlercode zurück und gibt entsprechende Meldungen aus. Sehe jetzt da nichts, wo Code angehalten werden muss? oder Code zurückgesetzt? werden muss.
      Ich habe viele Funktionen, die Prüfungen durchführen und bei denen ich an jedem Punkt in der Programmierung abbrechen muss.

      Beispiel:
      [highlight=c#]
      public void Prüfungsablauf()
      {
      PrüfeDatumsFelder();

      PrüfeEingabeFelder();

      SchreibeDatenNachPrüfung();

      BehandleDatenbankDaten();
      }

      private void PrüfeDatumsFelder()
      {
      //prüfe von-Datum, wenn von-Datum 10 Tage alt, dann abbruch

      /* ==> Anmerkung verfasser
      hier ist nun der Code der Prüfung
      und hier sollte bei einem >10 Tage Eingabedatum der Abbruch stattfinden
      und zwar so, dass die nachfolgenden Funktionen nicht mehr durchgeführt
      werden
      */

      }
      [/highlight]

      Es gibt in meiner Programmierung in einer WPF 7 Prüfungsfunktionen die nacheinancher durchgeführt werden müssen und in jeder Prüfungsfunktion sollte abbgebrochen werden.

      Ich hoffe es ist nun etwas deutlicher.

      Gruß und vielen Dank

      Lerando

      Comment


      • #4
        Warum geben dann deine Methoden keinen boolschen Wert zurück, anhand dessen du dann abbrechen kannst?

        private bool PrüfeDatumsFelder()

        und

        if(!PrüfeDatumsFelder())
        -> gebe Fehler aus breche Prüfungsablauf mit return ab

        Analog mit einem Fehlercode 0=ok alles was kleiner 0 ist, ist ein Fehler
        Christian

        Comment


        • #5
          Hallo,

          wenn ich das Problem richtig verstanden habe* ähnelt das einer Chain of Responsibility. Suche mal danach und lass dich davon inspirieren (Christians Antwort läuft auch darauf hinaus).

          Da du auch von WPF schreibst sollten die Prüfungen - zumindest wenn diese aufwändiger sind - in einen eigenen Thread ausgelagert werden. Schau dir hierzu dann das Konzept der Tasks an und in diesem Zusammenhang auch das Konzept der Cancellation.

          * es wäre hilfreich die Sprache der Programmierer zu lernen -> dann kommt es nicht zu missverständnissen udgl. Die eingangs gestellte Frage bzw. der Text derer ergibt überhaupt keinen Sinn. ZB assoziiere ich Marker mit Bookmarks und das ist ein Hilfsmittel der IDE und hat nix mit der Laufzeit des Programms zu tun.


          mfG Gü
          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

          Comment


          • #6
            Vielen Dank für Eure Hilfe,

            ich habe es so gelöst, dass ich ich über eine public variable den Abbruch erkenne.

            Ich hätte mir gerne ein paar Zeilen zum Programmieren gespart.

            Man kann nicht alles haben (**GRINS**)

            Ich dachte, dass es einen Befehl gibt, wie es auch einen Befehl für das schließen des gesamten Programms gibt (System.Envoirement.Exit(0).

            Nochmals Danke

            Gruß

            Lerando

            PS:: Bin totaler Anfänger.

            Comment


            • #7
              ich habe es so gelöst, dass ich ich über eine public variable den Abbruch erkenne.
              Empfinde ich nicht als elegante, zielführende Lösung

              System.Envoirement.Exit(0)
              Das wiederum finde ich extrem zielführend. Wenn der User irgendeinen Quatsch eingibt. Fintio.Ende. Fin. Soll er das nächste Mal sehen wie er es besser macht
              Christian

              Comment

              Working...
              X