Announcement

Collapse
No announcement yet.

Fehlermeldung beheben

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

  • Fehlermeldung beheben

    VB.NET 2005 Express
    Wie kann ich die folgende Meldung beheben?
    Die FelderPruefen-Funktion gibt nicht für alle Codepfade einen Wert zurück.
    Wenn das Ergebnis verwendet wird,
    kann zur Laufzeit eine Nullverweisausnahme auftreten.
    F:\Hwa\HwaDataSecur\Frm_Datenvergleich.vb 205 2 SwaDataSecur

    Danke für Antwort
    Hubert

  • #2
    Hallo Hubert,

    deine Funktion FelderPruefen hat einen Rückgabewert. Da du keinen Code gepostet hast, nehme ich mal an, dass dieser vom Typ bool ist.

    Deine Funktion kann einen Zustand annehmen, in der kein Wert zurückgegeben wird. Du müsstest jetzt nachschauen, wann deine Funktion keinen Wert zurückgibt und dies ändern. Damit verschwindet dann auch die Fehlermeldung.

    Das Problem, welches der Compiler hat ist, dass er nicht weiss, wie das Programm sich verhalten soll, wenn genau dieser Fall eintritt.

    Viele Grüße
    Andreas

    Comment


    • #3
      Hallo Schüler,

      oder anders formuliert: Es fehlt eine Return Anweisung in Deiner Methode "FelderPruefen", oder es wird nicht mit allen Varianten ein Return aufgerufen (in If-Bedingungen z.B.)

      Das was Andreas Moeller hier aber gesagt hat ist richtig, und wir könnten Dir ganz konkret helfen, wenn Du den Code Deiner Methode veröffentlichen würdest (wenn möglich).

      Viele Grüße
      _ntr_

      Comment


      • #4
        Code die Meldung kommt sehr oft vor

        Den Code zu veröffentliche ist für mich kein Problem.
        Hoffentlich ist diese eine Sub genug
        Besten Dank für Euer Angebot

        Private Function FelderPruefen() As Object
        If Len(txt_Email.Text) > InStr(2, txt_Email.Text, ".") Then
        If txt_PLZ.Text <> "" And txt_StrNr.Text <> "" And txt_Email.Text <> "" And InStr(2, txt_Email.Text, "@") > 0 And InStrRev(txt_Email.Text, ".") > 0 And InStr(2, txt_Email.Text, "@") < InStrRev(txt_Email.Text, ".") And txt_Name.Text <> "" And Txt_PlzOrt.Text <> "" And txt_Strasse.Text <> "" Then
        OKButton.Enabled = True
        Else
        OKButton.Enabled = False
        End If
        Else
        OKButton.Enabled = False
        End If

        End Function

        Comment


        • #5
          Eine Function in VB hat immer einen Rückgabetyp. Da du aber direkt auf die Eigenschaften des Buttons zugreifst und diese veränderst, ist eine Rückgabe nicht erforderlich.

          private Sub FelderPruefen() dürfte dein Compilierfehler beheben.

          Wenn due allerdings interessiert bist, was diese Funktion zurückliefert, könnte man folgendes machen:

          Code:
          Private Function FelderPruefen() As Boolean
                Dim result As Boolean = False
                If Len(txt_Email.Text) > InStr(2, txt_Email.Text, ".") Then
                   If txt_PLZ.Text <> "" And txt_StrNr.Text <> "" And txt_Email.Text <> "" And InStr(2, txt_Email.Text, "@") > 0 And InStrRev(txt_Email.Text, ".") > 0 And InStr(2, txt_Email.Text, "@") < InStrRev(txt_Email.Text, ".") And txt_Name.Text <> "" And Txt_PlzOrt.Text <> "" And txt_Strasse.Text <> "" Then
                      result = True
                   End If
                End If
                Return result
             End Function

          In deinem Programm könntest du dann beim Aufruf der Funktion folgendes machen:

          OKButton.Enabled = FelderPruefen()

          Damit greifst du nicht direkt auf den Button zu und du kannst die Funktion auch zu einer Fallunterscheidung benutzen.

          Edith sagt: Hurra, mein erstes VB-Programm (und es war nicht Hello World)

          Comment


          • #6
            Hallo liebes Forum,
            zu dem Thema "Nullverweisausnahme" würde mich interessieren wie den Code der nachstehenden Funktion verändern muß, damit er Bug-sicher wird?

            Private Sub frmBaseForm_Load(ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles Me.Load
            ...
            'AblaufProtokoll-Datei
            Debug.Listeners.Add(New TextWriterTraceListener _
            (New IO.StreamWriter(fnNameOfTraceFile(Me.ToString))))
            ...
            End Sub

            Private Function fnNameOfTraceFile(ByVal sender As String) As String
            Dim strText As System.String
            Dim charZeichen As System.Char
            Dim iTextLen As Integer
            Dim iCounter As Integer
            Try
            If Not IsNothing(sender) Then
            strText = Trim(sender.ToString)
            'Entfernen aller Sonderzeichen
            iCounter = 0
            Do Until iCounter = strText.Length
            charZeichen = CType(strText.Substring(iCounter, 1), Char)
            Select Case System.Char.IsPunctuation(charZeichen)
            Case True
            strText = strText.Remove(iCounter, 1)
            iTextLen = strText.Length
            iCounter -= 1
            End Select
            iCounter += 1
            Loop
            'Entfernen aller Leerzeicen
            iCounter = 0
            Do Until iCounter = strText.Length
            charZeichen = CType(strText.Substring(iCounter, 1), Char)
            Select Case System.Char.IsWhiteSpace(charZeichen)
            Case True
            strText = strText.Remove(iCounter, 1)
            iTextLen = strText.Length
            iCounter -= 1
            End Select
            iCounter += 1
            Loop
            strNameOfTraceFile = "Trace" + strText.ToString + ".txt"
            Else
            strNameOfTraceFile = "<NULL>.txt"
            fnNameOfTraceFile = strNameOfTraceFile
            End If
            fnNameOfTraceFile = strNameOfTraceFile
            Return fnNameOfTraceFile
            Catch ex As Exception
            MessageBox.Show(ex.Message.ToString)
            End Try
            End Function

            Wer hilft mir auf die Sprünge?

            Danke
            Christian

            Comment

            Working...
            X