Option Strict ON Problem

  • VB.NET
  • .NET (FX) 4.0

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

    Option Strict ON Problem

    Hey Leute ,
    ich habe ein Problem. Und zwar wenn ich in meinem Projekt von Option Strict OFF auf Option Strict ON stelle bekomme ich 17 Fehler. 15 Fehler habe ich behoben aber diese 2 konnte ich nicht beheben könnt ihr mir erklären was dieser Fehler bedeutet und wie ich ihn beheben kann?

    VB.NET-Quellcode

    1. AddHandler browser.DocumentCompleted, New EventHandler(AddressOf WebBrowserDocument_Completed)
    Option Strict On does not allow narrowing in implicit type conversions between method 'Public Shared Function WebBrowserDocument_Completed(sender As Object, e As Skybound.Gecko.GeckoProgressEventArgs) As String' and delegate 'Delegate Sub EventHandler(sender As Object, e As System.EventArgs)'.
    Hier wird WebBrowserDocument_Completed unterstrichen.

    VB.NET-Quellcode

    1. AddHandler browser.DocumentCompleted, New EventHandler(AddressOf class1.WebBrowserDocument_Completed)
    Option Strict On does not allow narrowing in implicit type conversions between method 'Public Shared Function WebBrowserDocument_Completed(sender As Object, e As Skybound.Gecko.GeckoProgressEventArgs) As String' and delegate 'Delegate Sub EventHandler(sender As Object, e As System.EventArgs)'.
    Hier wird class1.WebBrowserDocument_Completed unterstrichen.
    @Mete1997 Ein normaler EventHandler hat eine normale Signatur à la (sender As Object, e As System.EventArgs).
    Liest Du die Meldung, dann siehst Du, dass jenes Event aber im Handler die Skybound.Gecko.GeckoProgressChangedEventArgs verlangt.
    Wenn Du Dir all das sparen willst, dann hau das "new EventHandler()"-Zeugs einfach raus und schreib nur AddressOf, das geht automatisch auch. Da die Handler eigener Events btw mit Delegaten deklariert werden, kommt der Fehler auch mit dieser Beschreibung.

    btw: Die anderen Fehler wurden bestimmt mit den ins VS-integrierten Methoden à la CInt etc. behoben. Da nie drauf verlassen und das am Besten lesen:
    Konvertieren - wie funktionierts richtig
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

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

    Anzumerken noch: vor allem soll man Konvertieren schlicht vermeiden, wos vermeidbar ist.
    Das Weglassen des New Eventhandler()-Quatsches ist ja ein schönes Beispiel dafür, dass man einfach den richtigen Datentyp angibt - dann braucht man auch nix konvertieren, und dann ist man auch vor Konvertierungsfehlern gefeit.
    Dass ist imo die Haupt-Wirkung von Option Strict On!: Dass der Programmierer seinen Datentypen die gebührende Aufmerksamkeit schenkt, und sie für sich arbeiten lässt (statt allenthalben dagegen an-zukonvertieren).

    Eine Konvertierungs-freie Alternative ist wohl in 80% der Option Strict On Fehler auffindbar, den Rest muss man halt doch konvertieren.

    @TE: Du könntest mal paar Beispiele deiner 17 Fehler-Lösungen bringen, vlt. kann man dran aufzeigen, wassich meine.
    Ich habe leider den Quellcode von vor dem beheben nicht mehr. Aber ich habe wie @Trade auch sagt einige Stellen so ersetzt.Z.B

    VB.NET-Quellcode

    1. Tabcontrol1.TabPages.Add(CStr(i), "neuer tab")

    Es war so

    VB.NET-Quellcode

    1. Tabcontrol1.TabPages.Add(i, "neuer tab")

    @Trade wenn ich New EventHandler weglasse bekomme ich trozdem den gleichen Fehler.

    Es waren aber auch einige Fehler dabei wo ich an den Funktion Namen as String angehangen habe z.B hier

    VB.NET-Quellcode

    1. Public Shared Function WebBrowser_Windows(ByVal sender As Object, ByVal e As Skybound.Gecko.GeckoCreateWindowEventArgs) As String


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

    Es tut mir leid für den Doppelpost aber das Problem besteht weiterhin.

    Habs gelöst hab die Funktion einfach in eine andere Funktion mit eingebaut. Trozdem danke für eure Hilfe.

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