'Option Strict On' lässt spätes binden nicht zu

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von iiLaaf.

    'Option Strict On' lässt spätes binden nicht zu

    Hallo,

    Ich lasse den Interpret einer Sounddatei auslesen, aber mir wird der Fehler gegeben, dass 'Option Strict On' spätes binden nicht zu lässt.

    Mein Code:

    VB.NET-Quellcode

    1. lblInterpret.Text = wmp.currentMedia.getItemInfoByType("author", String.Empty, 0)


    Könnte mir da bitte jemand helfen?

    Mfg ;)
    vielleicht genügt schon

    VB.NET-Quellcode

    1. lblInterpret.Text = wmp.currentMedia.getItemInfoByType("author", String.Empty, 0).ToString
    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!
    Poste mal bitte etwas mehr Code: Variablendeklarationen, Imports und so, damit wir das nachvollziehen können.
    Was sind wmp-Inhalte für Files?
    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!
    Ich verwende das Windows Media-Player Steuerelement, aber auf Visible = False, habe alles mit eigenen Buttons, usw.

    Immer, wenn eine andere Sounddatei abgespielt wird (MediaChange), wird der Interpret des Liedes angezeigt (lblInterpret.Text):

    VB.NET-Quellcode

    1. Private Sub wmp_MediaChange(ByVal sender As System.Object, ByVal e As AxWMPLib._WMPOCXEvents_MediaChangeEvent) Handles wmp.MediaChange
    2. ' Interpret und Name des ausgewählten Liedes ermitteln
    3. lblInterpret.Text = wmp.currentMedia.getItemInfoByType("author", String.Empty, 0)
    4. End Sub


    "wmp" ist der AxWindowsMediaPlayer (also das Control)

    über "currentMedia" kann man Informationen über die aktuelle Musikdatei auslesen.
    z.B.: wmp.currentMedia.durationstring, um die Liedlänge herauszufinden

    "getItemInfoByType("attribute", language, Index)"
    z.B.: wmp.currentMedia.getItemInfoByType("author", String.Empty, 0) gibt den Interpreten der aktuell abgespielten Musikdatei zurück
    Hallo iiLaaf,

    wenn ich mir die Methode so ansehen, dann scheint diese verschiedene Objekte zurückgeben zu können.

    Option Strict On erwartet aber den richtigen Objekt-Typ (z.B. String)
    Da du Late Binding anwenden willst, merkt der Compiler das natürlich erst zur Laufzeit.

    Also

    1. Rückgabewert auf Objekttyp prüfen
    2. Wert an Variable übergeben - dabei richtig casten !

    Gruss

    mikeb69
    Kannst Du mir noch fix sagen, wie ich zu einem AxWindowsMediaPlayer komme?
    Ein solches Control wird mir leider nicht angeboten. ;(
    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!
    Danke für alle Antworten!
    Das mit dem Objekttyp hat gestimmt..ich hatte es als String probiert, aber es ging anders.
    Jemand aus dem vb@rchiv hat mit helfen können:

    VB.NET-Quellcode

    1. Dim media As WMPLib.IWMPMedia3 = CType(AxWindowsMediaPlayer1.currentMedia, WMPLib.IWMPMedia3)
    2. Label1.Text = media.getItemInfoByType("author", String.Empty, 0).ToString()


    Kann geschlossen werden

    Mfg ;)