Tags in Labels anzeigen (Bass.BASS_ChannelGetTags...)

  • VB.NET

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

    Tags in Labels anzeigen (Bass.BASS_ChannelGetTags...)

    Hola Muchachos y Muchachas !

    Ich bekomme von BASS einen ID3V1 Tag ausgelesen und als Array ausgegeben.
    Die Ausgabe in eine Listbox funktioniert wunderbar, ist aber nicht das, was ich will.
    Vielmehr will ich, daß die einzelnen Daten in unterschiedliche Labels ausgegeben werden.
    Daran haperts allerdings, da ich trotz probieren und suche nach Infos, nicht im Ansatz weiß, wie man das anstellt.

    Ein kleiner Schubser in die richtige Richtung, wäre nett, ein bißchen Beispielcode oder ein Tut, wären perfekt. :D

    VB.NET-Quellcode

    1. Dim tags As String() = Bass.BASS_ChannelGetTagsID3V1(stream)
    2. Dim tag As String
    3. For Each tag In tags
    4. If tag = Nothing Then
    5. MsgBox("Keine Daten verfügbar")
    6. Else
    7. ListBox1.Items.Add(tag)
    8. End If
    9. Next tag


    tag structure:

    Quellcode

    1. char id[3];
    2. char title[30];
    3. char artist[30];
    4. char album[30];
    5. char year[4];
    6. char comment[30];
    7. BYTE genre;

    "Comment. If the 30th character is non-null whilst the 29th character is null, then the 30th character is the track number and the comment is limited to the first 28 characters."
    Das bedeutet, daß die letzten beiden Stellen nicht angezeigt werden sollen.

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

    Ja ist das nun ein String-Array oder eine (komplexe) Struktur, was da zurückkommt?
    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!
    Deine Frage kann ich dir nicht wirklich beantworten, da im Moment keinen Unterschied zwischen "String-Array" und "(komplexe) Struktur" feststellen kann. :D

    Genau die unter "tag structure" aufgelisteten sieben (Ich nenne sie jetzt mal) Array-Ergebnisse, werden ausgegeben.
    (In den eckigen Klammern wird die Anzahl der maximalen Zeichenanzahl angegeben.)
    Hallo,

    Du bekommst von Bass.BASS_ChannelGetTagsID3V1(stream) einen einfachen string-array zurück. Mit folgendem Beispiel weisst du anderen Strings einen Wert aus dem Array zu.

    VB.NET-Quellcode

    1. Dim tags() As String = Bass.BASS_ChannelGetTagsID3V1(stream)
    2. Dim id As String = tags(0)
    3. Dim title As String = tags(1)
    4. Dim artist As String = tags(2)
    5. Dim album As String = tags(3)
    6. Dim year As String = tags(4)
    7. Dim comment As String = tags(5)
    8. Dim genre As String = tags(6)

    wobei du bei genre einen "Zahlenwert" als string bekommst. Welche "Zahl" für welches Genre steht kannst du bei Wikipedia erfahren.

    mfG

    Derfuhr

    Edit: Du brauchst eigendlich keinen String() erstellen, du kannst das direkt so auslesen:

    VB.NET-Quellcode

    1. Dim id As String = Bass.BASS_ChannelGetTagsID3V1(stream)(0)
    2. Dim title As String = Bass.BASS_ChannelGetTagsID3V1(stream)(1)
    3. Dim artist As String = Bass.BASS_ChannelGetTagsID3V1(stream)(2)
    4. Dim album As String = Bass.BASS_ChannelGetTagsID3V1(stream)(3)
    5. Dim year As String = Bass.BASS_ChannelGetTagsID3V1(stream)(4)
    6. Dim comment As String = Bass.BASS_ChannelGetTagsID3V1(stream)(5)
    7. Dim genre As String = Bass.BASS_ChannelGetTagsID3V1(stream)(6)

    (inkl. kliener Copy&Paste-Bremse)(irgendwann merkst du es.........vieleicht)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Derfuhr“ ()

    Wenn Du die Information überarbeitet ausgeben willst, mach Dir dafür eine Klasse, die die korekte "Übersetzung" vornimmt.
    Dann gibst Du dieser Klasse entsprechende Properties, die Du dann von außen ausliest und in Deinen Labels darstellst.
    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 habe es jetzt folgendermaßen gelöst, ...
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim tags() As String = Bass.BASS_ChannelGetTagsID3V1(stream)
    2. If tags IsNot Nothing Then
    3. Dim title As String = tags(0)
    4. LabelTitle.Text = "Title: " & title
    5. Dim artist As String = tags(1)
    6. LabelArtist.Text = "Artist: " & artist
    7. Dim album As String = tags(2)
    8. LabelAlbum.Text = "Album: " & album
    9. Dim year As String = tags(3)
    10. LabelYear.Text = "Year: " & year
    11. Dim comment As String = tags(4)
    12. LabelComment.Text = "Comment: " & comment
    13. Dim genre As String = tags(5)
    14. LabelGenre.Text = "Genre: " & genre
    15. Dim track As String = tags(6)
    16. LabelTrack.Text = "Track: " & track
    17. End If
    18. If tags Is Nothing Then
    19. Dim title As String = "Title:"
    20. LabelTitle.Text = title
    21. Dim artist As String = "Artist:"
    22. LabelArtist.Text = artist
    23. Dim album As String = "Album:"
    24. LabelAlbum.Text = album
    25. Dim year As String = "Year:"
    26. LabelYear.Text = year
    27. Dim comment As String = "Comment:"
    28. LabelComment.Text = comment
    29. Dim genre As String = "Genre:"
    30. LabelGenre.Text = genre
    31. Dim track As String = "Track:"
    32. LabelTrack.Text = track
    33. End If
    ..., wie ich die Daten jetzt weitet verarbeite, übelege ich mir noch.
    Vielen Dank für die Hilfe, Thema vorerst erledigt. :)

    timonator schrieb:

    VB.NET-Quellcode

    1. End If
    2. If tags Is Nothing Then
    Ersetz das mal durch Else.
    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!