Announcement

Collapse
No announcement yet.

eigene Fehlermeldung

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

  • eigene Fehlermeldung

    Hi,

    ich hab die Tage ein Programm erstellt für diverse Berechnungen und wenn jetzt ein Eingabefeld leer bleibt oder man versucht Buchstaben anstelle von Zahlen zu berechnen, springt nur eine Fehlermeldung auf und das Programm hängt sich für kurze Zeit auf.

    Wie bekomm ich diese Fehlermeldung beseitigt, bzw. den Hinweis das nur Zahlen erlaubt sind und alle Felder ausgefüllt werden müssen, anstelle dieser nervigen großen Fehlermeldung?

    LG

    Vinc.

  • #2
    Hallo,

    schau mal in der MSDN unter TRY-CATCH nach. So kannst du eine Fehlberhandlung realisieren und gezielt auf die Fehler reagieren.

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

    Comment


    • #3
      MSDN? Wo find ich das?

      Comment


      • #4
        Originally posted by Vincent View Post
        MSDN? Wo find ich das?
        Suchmaschine

        http://msdn.microsoft.com/de-de/library/fk6t46tz.aspx

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

        Comment


        • #5
          Hallo und auch noch willkommen,

          auch geeignet ist die SDK-Doku bzw. <F1>. Und wenn Du hier nach Hilfe fragst, solltest Du (in aller Regel) die Fehlermeldungen angeben. Ebenso ist es nützlich zu wissen, ob Du als Eingabefeld TextBox oder MaskedTextBox oder NumericUpDown oder vielleicht noch etwas anderes verwendest. (Hiermit habe ich auch gleich noch alternative Vorschläge gebracht.)

          Außerdem habe ich den Eindruck, dass die Überschrift Deiner Frage wenig mit der Frage zu tun hat. Meinst Du, dass Du eigene Fehlermeldungen bei Deinem Vorgehen produzieren willst, oder geht es Dir um die "automatisch" erzeugten Fehlermeldungen?

          Gruß Jürgen

          Comment


          • #6
            integer.tryParse / integer.Parse bzw. double, single, ... im gegensatz zu try-catch wird dann die Ausführung nicht unterbrochen und man kann fehlende Werte durch Standart-Werte ersetzen. Eine andere Möglichkeit wäre, mit dem textchanged-Event darauf zu reagieren und bei einer leeren Textbox "0" einzufügen ...

            Comment


            • #7
              Und wenn Du hier nach Hilfe fragst, solltest Du (in aller Regel) die Fehlermeldungen angeben. Ebenso ist es nützlich zu wissen, ob Du als Eingabefeld TextBox oder MaskedTextBox oder NumericUpDown oder vielleicht noch etwas anderes verwendest.
              Ich benutze richtextboxen (obwohls wohl auch mit normalen textboxen funktionieren sollte) und normale buttons.

              Ein Screenshot zur Fehlermeldung findet ihr hier:



              Er tritt immer auf wenn ich die Richtextboxen leer lasse oder Buchstaben anstelle von Zahlen einfüge. Stattdessen möchte ich lieber eine eigene Fehlermeldung angeben (das nur Zahlen funktionieren und alle Felder ausgefüllt werden müssen oder dergleichen).

              Ich bin zudem noch Anfänger, was vb.net betrifft (vorher vba und vb), seid also nachsichtig, wenn ihr mit diversen Fachwörtern vb.net bezüglich um euch schmeißt.

              LG & thx schonmal

              Vinc.
              Zuletzt editiert von Vincent; 20.10.2008, 22:15.

              Comment


              • #8
                im gegensatz zu try-catch wird dann die Ausführung nicht unterbrochen
                die Ausführung wird nicht unterbrochen sondern im catch-Block fortgesetzt. Schau dir mal an wie das Exception-Handling in .net funktioniert.

                TryParse prüft intern über unmanaged Code ob die Konvertierung möglich ist und wenn ja wird sie durchgeführt.

                Von der Benutzersicht könnte dies auch im try-Block passieren und der catch würde dem else entsprechen. Es ist aber trotzdem besser die eingebaute Methode zu verwenden, so dass zB

                [highlight=vb.net]
                Private Sub textBox1_Validating(sender As Object, e As CancelEventArgs)
                Dim i As Integer

                If Integer.TryParse(textBox1.Text, i) Then
                Der ganzzahlige Wert in der TextBox steht in i
                Else
                MessageBox.Show("Nur Zahlenwerte zulässig")
                End If
                End Sub
                [/highlight]

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

                Comment


                • #9
                  TryParse ist vielleicht in erster Linie recht nett, aber wenn man den Wert dann löschen will springt die Fehlermeldung wieder auf (da dann die Box ja leer ist) und wenn ich garnichts reinschreibe und dann auf Berechnen klicke, springt immernoch die Fehlermeldung aus dem Screenshot auf.

                  Comment


                  • #10
                    Dann prüfe zuerst mit
                    [highlight=vbnet]
                    If (String.IsNullOrEmpty(textBox1.Text))
                    ' nichts eingetragen
                    Else
                    ' Werte vorhanden
                    EndIf
                    [/highlight]

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

                    Comment


                    • #11
                      die Ausführung wird nicht unterbrochen sondern im catch-Block fortgesetzt. Schau dir mal an wie das Exception-Handling in .net funktioniert.
                      aber wenn man zwei anweisungen hat, bei der die erste in einem try-catch-block eine ausnahme wirft, wird das Programm wie fort fortgeführt:
                      1. catch-Block
                      2. finally-Block
                      3. NACH dem try-catch-block

                      Die nächste Anweisung im try-Block wird also ausgelassen (sonst wäre ein finally-block sinnlos) und die zweite anweisung wird nicht ausgeführt:
                      Code:
                      var l as new List(Of String)
                      l.add('x')
                      l.add('y')
                      Try
                      l.removeAt(100)
                      MsgBox("Nie")
                      Catch
                      MsgBox("1.")
                      Finally
                      MsgBox("2.")
                      End Try
                      MsgBox("3.")
                      mal ne andere Frage: Wie kann man .NET-Code formatieren?

                      Comment


                      • #12
                        Originally posted by levu View Post
                        aber wenn man zwei anweisungen hat, bei der die erste in einem try-catch-block eine ausnahme wirft, wird das Programm wie fort fortgeführt:
                        Du schreibst selber "fortgeführt" und das ist != unterbrochen.

                        Formatierungen: http://entwickler-forum.de/misc.php?do=bbcode (ganz unten)

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

                        Comment


                        • #13
                          Originally posted by gfoidl View Post
                          Du schreibst selber "fortgeführt" und das ist != unterbrochen.
                          Sry, dass ich mich undeutlich ausgedrück habe! Es ist dennoch "sauberer", mit anderen Mitteln zu programmieren !
                          Formatierungen: http://entwickler-forum.de/misc.php?do=bbcode (ganz unten)
                          Danke, muss man auch erstmal finden !

                          Comment


                          • #14
                            Ich hab den Code von gfoidl mal kurz ausprobiert, konnte aber bisher kein erfolgreiches Ergebnis erzielen.


                            Zur Verständigung hab ich eine kleine Gui erstellt mit einer simplen multiplikationsrechnung. Wenn ich da garnichts eingebe und auf Berechnen klicke, stürzt das Programm ab, bzw. die allseidsbekannte Fehlermeldung kommt.

                            Vll könntest du mir ja nochmal erklären, was ich mit deinem Code anstellen soll

                            Download Link

                            Comment


                            • #15
                              Hallo,

                              die Sub sollte so ausschauen:
                              [highlight=vbnet]
                              Sub BerechnenClick(ByVal sender As Object, ByVal e As EventArgs)
                              Dim Box1, Box2, Box3 As Single

                              ' Einlesen des 1. Werten. Mit TryParse wird versucht
                              ' den String (in einer TextBox ist immer ein String) in
                              ' eine Zahl (hier Single) zu konvertieren. Glückt dies
                              ' ist in der Variablen Box1 der Wert. Sonst wird über
                              ' die If-Kontrollstruktur (mit NOT) eine Meldung angezeigt.
                              If (not single.TryParse(feld1.Text, box1))
                              MessageBox.Show("Zahl in Feld1 eingeben!")

                              ' Keine Zahl -> deshalb Prozedur verlassen:
                              Return
                              End If

                              ' Das gleiche für die 2. Zahl:
                              If (Not Single.TryParse(feld2.Text, box2)) Then
                              messagebox.Show("Zahl in Feld2 eingeben!")
                              Return
                              End If

                              ' Berechnung durchführen:
                              box3 = box1 * box2

                              ' Wert der Berechnung in Feld3 schreiben:
                              feld3.Text = format(box3, "#,##")
                              End Sub
                              [/highlight]

                              Eine Prüfung ob ein Eintrag in der TextBox vorhanden ist nicht nötig da dies mit TryParse auch erledigt wird.

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

                              Comment

                              Working...
                              X