Hilfe bei merkwürdiger Rückgabe einer Function - Wert ändert sich.

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Hilfe bei merkwürdiger Rückgabe einer Function - Wert ändert sich.

    Moin!

    ich habe zwei Funktionen, die auf einen Dialog zugreifen der dann wiederum etwas zurückliefern soll.

    In folgender Funktion funktioniert es:

    VB.NET-Quellcode

    1. Public Function Search() As Long
    2. Dim FidOfAddr As Long = -1
    3. Dim f As New DLG_Adressen(_clientplugin, _EBLog, FidOfAdress:=FidOfAddr, WhatDo:=DLG_Adressen.TypeToDo.Search)
    4. With f
    5. Try
    6. Select Case .ShowDialog()
    7. Case DialogResult.OK ' Adresse wird übernommen
    8. FidOfAddr = .FidOfAdress ' auslesen der AdressenFID
    9. End Select
    10. Catch ex As Exception
    11. XMsgBox.Show(ex.ToString)
    12. End Try
    13. End With
    14. Return FidOfAddr
    15. End Function


    Die aufrufende Funktion sieht wie folgt aus:

    VB.NET-Quellcode

    1. Private Sub Bt_AddrSearch_Antrag_Click(sender As Object, e As EventArgs) Handles bt_AddrSearch_Antrag.Click
    2. Dim Addr As New EBL.MapEdit.FUNC_Adressen(_clientplugin)
    3. Dim tmpAddrFID As Long = Addr.Search()
    4. If Not tmpAddrFID = -1 Then
    5. _FidOfAdressEigentümer = tmpAddrFID ' Setzen der neuen Eigentümer FID
    6. SetAntragsteller()
    7. End If
    8. End Sub


    Nun zu dem Problem

    VB.NET-Quellcode

    1. Public Function Add() As Long
    2. Dim FidOfAddr As Long = -1
    3. Dim f As New DLG_Adressen(_clientplugin, _EBLog, FidOfAdress:=-1)
    4. With f
    5. Try
    6. Select Case .ShowDialog()
    7. Case DialogResult.OK ' Adresse wurde angelegt
    8. FidOfAddr = .FidOfAdress ' auslesen der AdressenFID
    9. End Select
    10. Catch ex As Exception
    11. XMsgBox.Show(ex.ToString)
    12. End Try
    13. End With
    14. Return FidOfAddr
    15. End Function


    VB.NET-Quellcode

    1. Private Sub Bt_AddAddr_Antrag_Click(sender As Object, e As EventArgs) Handles bt_AddAddr_Antrag.Click
    2. Dim Addr As New EBL.MapEdit.FUNC_Adressen(_clientplugin)
    3. Dim tmpAddrFID As Long = Addr.Add()
    4. If Not tmpAddrFID = -1 Then
    5. _FidOfAdressEigentümer = tmpAddrFID ' Setzen der neuen Eigentümer FID
    6. SetAntragsteller()
    7. End If
    8. End Sub


    Bei Search wird eine richtige FID (LONG) zurück gegeben. Bei Add wird im Debugger ein richtiger Long-Wert beim Return angezeigt.



    In der aufrufenden Funktion kommt ein 0 an!


    Was mich nur wundert, dass nach dem Return und End Function (39) in die erste Kommentarzeile (40) gesprungen (F10-Taster) wird.


    Hat einer eine Idee? Vielleicht habe ich das im letzten Bild falsch im Kopf.

    Gruß Jan
    @jan99 Möglicherweise werden nicht alle Konfigurationen erstellt, insbesondere bei mehreren Projekten in der Projektmappe:
    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!