Code ändern so das es keine Fehler gibt !

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von progThis.

    Code ändern so das es keine Fehler gibt !

    Hallo,

    ich hab ein Problem hier ist ein Auszug des Codes:

    VB.NET-Quellcode

    1. Dim routesOverlay As New GMapOverlay("routes")
    2. routesOverlay.Routes.Add(r)
    3. GMapControl1.Overlays.Add(routesOverlay)
    4. r.Stroke.Width = 2
    5. r.Stroke.Color = Color.SeaGreen



    In Zeile 1 wird routesOverlay blau unterstrichen und bekommt die Fehlermeldung: Fehler bei der Überladungsauflösung,da keine zugreifbare "New" diese Anzahl von Argumenten akzeptiert.


    Das sind meine Imports:

    VB.NET-Quellcode

    1. Imports GMap.NET.MapProviders
    2. Imports GMap.NET.MapProviders.BingMapProvider
    3. Imports GMap.NET
    4. Imports GMap.NET.MapRoute
    5. Imports GMap.NET.WindowsForms.Markers
    6. Imports GMap.NET.WindowsForms.ToolTips
    7. Imports System.IO
    8. Imports System.Runtime.Serialization
    9. Imports GMap.NET.WindowsForms
    10. Imports GMap.NET.CacheProviders
    11. Imports GMap.NET.GMaps
    12. Imports GMap.NET.WindowsForms.GMapOverlay
    13. Imports GMap.NET.MapProviders.GoogleMapProvider
    14. Imports GMap.NET.WindowsForms.GMapControl
    15. Imports GMap.NET.CacheProviders.MsSQLPureImageCache
    16. Imports GMap.NET.Internals
    17. Imports GMap.NET.metadataType
    18. Imports GMap.NET.Placemark
    19. Imports GMap.NET.WindowsForms.GMapRoute



    Wie kann ich den Code ändern so das er keine Fehler enthält ???


    Gruß progThis :)
    Bitte! Lern doch erstmal die Grundlagen der Grundlagen der Grundlagen. Es gibt keinen Konstruktor der diese Argumente akzeptiert. Heißt pass deine Parameterliste an eine passende Überladung des Konstruktors an.
    --> Schau intellisense was dir vs vorschlägt.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Da kommt der gleiche Fehler nochmal :/

    Wenn man das

    VB.NET-Quellcode

    1. New
    weglässt kommt dieser Fehler: Die routesOverlay-Variable wird verwendet,bevor Ihr ein Wert zugewiesen wird.Zur Laufzeit kann eine Nullverweisaufnahme auftreten.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „progThis“ ()

    programmer71 schrieb:


    VB.NET-Quellcode

    1. Dim routesOverlay As GMapOverlay = New GMapOverlay("routes")

    Sollte gehen.
    Oder einfach das New raus.
    @programmer71 findest du das nicht irgendwie komisch, dass du andere permanent dazu aufforderst Grundlagen zu lernen? Also ich finds zum brüllen :thumbsup: :thumbsup: :thumbsup: :thumbsup:
    Zum Problem: Wenn dieser Code aktuell ist: navigational.googlecode.com/sv…ndowsForms/GMapOverlay.cs
    Dann gibt es nur eine Überladung welche als ersten Parameter ein GMapControl und als zweiten Parameter eine id erwartet.

    EDIT: Lesen und verstehen: msdn.microsoft.com/en-us/library/77s47661.aspx und weniger glauben schon alles zu wissen.
    EDIT2:

    progThis schrieb:

    weglässt kommt dieser Fehler: Die routesOverlay-Variable wird verwendet,bevor Ihr ein Wert zugewiesen wird.Zur Laufzeit kann eine Nullverweisaufnahme auftreten.

    programmer71 hat nicht den Hauch einer Ahnung, lass das New drinnen. Du musst nur die Parameter ändern. Die Parameter befinden sich in der New GMapOverlay(Parameter1, Parameter2, Parameter3,... Parameter[n]).
    Wenn die Version des Codes welchen ich oben gepostet habe stimmt musst du zuerst ein GMapControl angeben und dann eine id.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „thefiloe“ ()

    programmer71 schrieb:

    Sorry, ich kenn die API nicht
    Es ist nicht so als ob ich überhaupt wüsste was die API macht(gehe davon aus, dass es irgendwas mit Karten zu tun hat?). Das ist aber auch zu 100% unrelevant. Du weißt nicht wie man etwas instanziert und das gehört zu den Grundlagen der Grundlagen der Grundlagen und so weiter. Und wenn du dann noch hinzufügst, dass man etwas gar nicht instanzieren soll nur weil er falsche Parameter angibt, dann hast du so viele Grundlagen wie ein Anfänger der seit heute Morgen etwas am rumprobieren ist. Wenn dieser jedoch auch nur das erste Kapitel eines Buches gelesen hat dann weiß er bedeutend mehr. Was ich mit permanent meine? Durchsuche mal deine Beiträge nach Meldungen wie "Da fehlt es wohl an Grundlagen" oder "Du solltest dich mit Grundlagen befassen", etc.

    Code ist etwas schwierig, da ich die API nicht kenne. Wenn du ... New GMapOverlay schreibst und nun eine '(' öffnest, dann sollte ein Fensterchen kommen welches ähnlich wie dieses aussieht(Inhalt ist egal):


    Der hervorgehobene Text ist der aktuelle Parameter den du eingeben musst. Wenn du nun einen ',' eingibst kommst du zum nächsten Parameter


    Bleiben wir beim ersten Parameter. Dieser ist vom Typ ProcessOutputFlags(nur jetzt in dem Beispiel). Das heißt du nun also auch einen Wert vom Typ ProcessOutputFlags übergeben. Das gilt dann beim zweiten, dritten,... Parameter auch. Nun gibt es verschiedene Überladungen(nicht zwangsläufig, je nach dem ob diese jemand erstellt hat). In meinem Beispiel gibt es 3 Überladungen. Dies was du oben siehst wäre jetzt die 1. von drei Überladungen. Wenn du auf den kleine Pfeil nach unten klickst siehst du die 2.:


    Diese hat wieder andere Parameter wie du sehen kannst und somit musst du auch etwas anderes eingeben damit diese Überladungen verwendet wird.
    Die Parameter trennst du(wie bereits oben gesagt) durch einen ',' von einander.

    Das war jetzt nur ein Beispiel. Du musst jetzt bei deinem Code hingehen und dir das selbst anschauen welche Parameter du verwenden musst.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „thefiloe“ ()

    Alsoo wenn du eine Variabhle vom Typ x deklarierst dann ist diese = Nothing und kann demnach auch nichts machen. Du kannst Klassen instanzieren mit dem Konstruktor New. y As New X wird eine neue Instanz von X erstellt, der Konstruktor kann Parameter haben diese müssen auch mit rein Dim y As New X (z, w). Außerdem kannst du der Variable einen Wert zuweisen Dim a As String = "Hallo". So wären y & a Objecte <> Nothing und du kannst damit machen was du willst
    Der komplette Code:

    VB.NET-Quellcode

    1. Imports GMap.NET.MapProviders
    2. Imports System.Drawing
    3. Imports System.Drawing.Drawing2D
    4. Imports GMap.NET.ObjectModel
    5. Imports GMap.NET.MapProviders.BingMapProvider
    6. Imports GMap.NET
    7. Imports GMap.NET.MapRoute
    8. Imports GMap.NET.WindowsForms.Markers
    9. Imports GMap.NET.WindowsForms.ToolTips
    10. Imports System.IO
    11. Imports System.Runtime.Serialization
    12. Imports GMap.NET.WindowsForms
    13. Imports GMap.NET.CacheProviders
    14. Imports GMap.NET.GMaps
    15. Imports GMap.NET.WindowsForms.GMapOverlay
    16. Imports GMap.NET.MapProviders.GoogleMapProvider
    17. Imports GMap.NET.WindowsForms.GMapControl
    18. Imports GMap.NET.CacheProviders.MsSQLPureImageCache
    19. Imports GMap.NET.Internals
    20. Imports GMap.NET.metadataType
    21. Imports GMap.NET.Placemark
    22. Imports GMap.NET.WindowsForms.GMapRoute
    23. Public Class Route_berechnen
    24. Private Sub Route_berechnen_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    25. GMapControl1.MapProvider = GMapProviders.GoogleMap
    26. GMapControl1.SetCurrentPositionByKeywords("Deutschland")
    27. GMapControl1.MinZoom = 3
    28. GMapControl1.MaxZoom = 17
    29. GMapControl1.Zoom = 5
    30. GMapControl1.Manager.Mode = AccessMode.ServerAndCache
    31. End Sub
    32. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    33. Dim start As New String(TextBox1.Text)
    34. Dim [end] As New String(TextBox2.Text)
    35. Dim route As MapRoute = GoogleMapProvider.Instance.GetRouteBetweenPoints(start, [end], False, False, 15)
    36. Dim r As New GMapRoute(route.Points, "My route")
    37. Dim routesOverlay As New GMapOverlay 'Hier kommt dieser Fehler !
    38. routesOverlay.Routes.Add(r)
    39. GMapControl1.Overlays.Add(routesOverlay)
    40. r.Stroke.Width = 2
    41. r.Stroke.Color = Color.SeaGreen
    42. End Sub