Fehlerbehebung durch Option strict

  • VB.NET
  • .NET 5–6

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

    Fehlerbehebung durch Option strict

    Guten Morgen liebes Forum

    Ich möchte prüfen ob ein Datum in der Zukunft liegt mit folgender Funktion:

    VB.NET-Quellcode

    1. Public Function CheckValidDate(MyObject As Object) As Date
    2. 'prüft ob Datum des Objektes in der Zukunft liegt
    3. If MyObject.Value > Now Then Return CDate(CStr(False)) Else Return CDate(CStr(True))
    4. End Function


    Da ich Option Strict ja immer ausgeschaltet habe "Mault" VB jetzt, das ("Option Strict On" lässt kein spätes Binden nicht zu)

    Was ist da zu machen?

    Gruß und Danke Gebhard

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    @Typhoon Verstehe zunächst, was da eigentlich steht:
    CStr(False) => "False"
    CDate("False") soll was sein?
    ====
    Vielleicht gibst Du Deiner Funktion CheckValidDate() den Type Boolean, dann spricht die Nachbarin wieder mit Dir:

    VB.NET-Quellcode

    1. Public Function CheckValidDate(MyObject As Object) As Boolean
    2. 'prüft ob Datum des Objektes in der Vergangenheit liegt
    3. Return MyObject.Value <= DateTime.Now
    4. End Function

    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!
    Eine Variable vom Typ Object hat keine Value-Eigenschaft. Daher das Gemeckere. Lege den Datentyp von MyObject auf das fest, was es ist, also den Datentyp, der diese Value-Eigenschaft hat.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo zusammen

    Danke für eure Beiträge.

    @VaporiZed manchmal braucht es einen "Schups" damit man an das Ziel kommt. Der Tipp war :thumbup:

    So klappts:

    VB.NET-Quellcode

    1. Public Function CheckValidDate(MyObject As DateTimePicker) As Boolean
    2. 'prüft ob Datum des Objektes in der Zukunft liegt
    3. If MyObject.Value > Now Then
    4. Return False
    5. Else
    6. Return True
    7. End If
    8. End Function


    DANKE!!!
    Kleiner Tipp zusätzlich: Boolean-Vergleiche mit True sind überflüssig.

    VB.NET-Quellcode

    1. Public Function CheckValidDate(MyObject As DateTimePicker) As Boolean
    2. 'prüft ob Datum des Objektes in der Zukunft liegt
    3. Return MyObject.Value <= Now
    4. End Function
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Typhoon schrieb:


    Da ich Option Strict ja immer ausgeschaltet habe "Mault" VB jetzt, das ("Option Strict On" lässt kein spätes Binden nicht zu)

    Als ehemaliger Option Strict On Muffel kann ich Dir nur empfehlen das immer eingeschaltet zu lassen. Ja, es nervt zu Anfang und bremst einen (gefühlt) beim Coden aus. Aber das Gefühl verschwindet irgendwann und man hat einige Fehler weniger die man suchen muss.
    Aktuelles Projekt: Z80 Disassembler für Schneider/Amstrad CPC :love: