Problem mit Weitergabe von ENUM-Wert an andere Funktion

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Problem mit Weitergabe von ENUM-Wert an andere Funktion

    Moin!

    ich möchte Definitionen über eine ENUM-Definition weitergeben. Es kommt aber immer der Wert -1 an.

    Vielleicht kann mir einer von Euch weiterhelfen.

    Hier der Code dazu:

    VB.NET-Quellcode

    1. Imports System
    2. Imports Mum.Geo.Client.DataConnections
    3. Public Class FUNC_SQL
    4. Private _EBLog As FUNC_Log
    5. ' ------ http://ma22-wiki-001/eblwiki/index.php?title=EBL_Funktionen_(MapEdit_API_Dokumentation)#FUNC_SQL ------
    6. ''Private _MyApplication As Mum.Geo.Client.Application
    7. ''Private _connection As Mum.Geo.DataAccess.Connection
    8. ''Private _DBC As FUNC_DB_Connection
    9. Public Enum GeomType
    10. Schacht
    11. Haltung
    12. End Enum
    13. <Global.System.Diagnostics.DebuggerStepThroughAttribute()>
    14. Public Sub New(Log As FUNC_Log)
    15. '' _MyApplication = MyApplication
    16. _EBLog = Log
    17. '' _connection = conn
    18. '' _DBC = New FUNC_DB_Connection(_connection, _EBLog)
    19. End Sub
    20. <Global.System.Diagnostics.DebuggerStepThroughAttribute()>
    21. Public Function GetSqlWhere4SearchBox(PickPoint As Mum.Geo.Geometry.Point, SuchFeldRadius As Double, WhatSearch As GeomType, Optional GeomBuchstabe As String = "") As String
    22. ' ------ http://ma22-wiki-001/eblwiki/index.php?title=EBL_Funktionen_(MapEdit_API_Dokumentation)#GetSqlWhere4SearchBox ------
    23. Dim SQL As String = ""
    24. If SuchFeldRadius = 0 Then Return SQL
    25. With _EBLog
    26. .Log("SuchFeldRadius:= " & SuchFeldRadius.ToString)
    27. Dim UL_Y As Double = PickPoint.Y - SuchFeldRadius
    28. Dim UL_X As Double = PickPoint.X - SuchFeldRadius
    29. Dim OR_Y As Double = PickPoint.Y + SuchFeldRadius
    30. Dim OR_X As Double = PickPoint.X + SuchFeldRadius
    31. SQL = GetSqlWhere4SearchBox_Work(UL_X, UL_Y, OR_X, OR_Y, WhatSearch:=WhatSearch, GeomBuchstabe:=GeomBuchstabe)
    32. End With
    33. Return SQL
    34. End Function


    Die aufrufende Funktion ist..

    VB.NET-Quellcode

    1. Private Sub GetPointCompleted(ByVal args As Mum.Geo.Map.GetPointResultArgs)
    2. Dim fOSS As New FUNC_ObjSearchSection(Me.Application, _connection_KANAL, _EBLog)
    3. If Not args.Canceled Then
    4. Dim Point As Mum.Geo.Geometry.Point = args.Point
    5. fOSS.OpenObjSearchSection(_SQLs, Point, WhatToSearch:=FUNC_SQL.GeomType.Schacht, SelRadiusMMinMap:=k_SelRadiusMMinMap)
    6. Else
    7. _EBLog.LogAndMsgBox("Es wurde kein Punkt gewählt!")
    8. End If
    9. End Sub


    Wenn ich die Funktion im zweiten Code-Block aufrufe, dann kommt in der Zeile 38 im ersten Code-Block -1 an und nicht wie erwartet die 1 für die Haltung?!!??!?!?
    @jan99 Setze beim Aufruf der Prozedur einen Haltepunkt drauf und überzeuge Dich davon, dass der richtige Wert reingereicht wird.
    Debuggen, Fehler finden und beseitigen
    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!

    slice schrieb:

    Und was machst du in fOSS.OpenObjSearchSection(...)?


    oh, da habe ich eine Zwischenfunktion vergessen....

    VB.NET-Quellcode

    1. Public Sub OpenObjSearchSection(SQLs() As String,
    2. PickPoint As Mum.Geo.Geometry.Point,
    3. WhatToSearch As FUNC_SQL.GeomType,
    4. Optional SelRadiusMMinMap As Double = 5.0)
    5. Dim FoundObjs As New Dictionary(Of String, String)
    6. Dim fSelDia As FUNC_SelectionDialog = New FUNC_SelectionDialog(_MyApplication, _connection, _EBLog)
    7. Dim fSQL As FUNC_SQL = New FUNC_SQL(_EBLog)
    8. ' highlight der Elemente aufheben
    9. _MyApplication.Project.Map.UnHighlightAllAsync(AddressOf UnHighlightCompleted)
    10. With _EBLog
    11. .FunctionStart("Objekte über Auswahlpunkt suchen")
    12. Dim Scale As Double = _MyApplication.Project.Map.Scale()
    13. Dim SuchFeldRadius As Double = Scale * SelRadiusMMinMap / 1000
    14. .Log2D("Auswahlpunkt", PickPoint)
    15. .Log("current Scale:= " & Scale.ToString)
    16. Dim SQL4Box As String = fSQL.GetSqlWhere4SearchBox(PickPoint, SuchFeldRadius, WhatToSearch = WhatToSearch)


    @Rod: ich habe mir die Haltepunkte gesetzt .

    Beim Erreichen der Funktion OpenObjSearchSection wird noch der richtige Wert im Debug angezeigt.

    In GetSqlWhere4SearchBox kommt dann -1 an!

    Gruß Jan
    @jan99 Du wirst einsehen, dass ich das nicht glauben kann.
    Kann es sein, dass Du Strict Off programmierst und ggf. die Parameter in der falschen Reihenfolge eingetragen hast?
    Ansonsten mach ein Testprojekt, das den Fehler reproduziert.
    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!
    Moin!

    ja, ich habe mit Strict Off programmiert und der eine oder andere wird mich jetzt steinigen. Einen Teil der Fehler kann und werde ich auch beheben. Aber zu manchen Dingen habe ich trotz suchen in der Vergangenheit keine Lösung gefunden und damit überhaupt etwas hinten raus kommt ... habe ich gesündigt.

    Dank Strict On habe ich aber auch den Schreibfehler gefunden.

    Gruß Jan