Question

Je fais un projet en VB.NET 2005, où je dois extraire les informations de balise de fichiers mp3. A cette fin, j'ai le code utilisé dans cette . Mais la question est quand l'un de l'étiquette est vide, il n'a pas retourné aucune valeur.

Par exemple, en utilisant ce que je peux récupérer des informations sur l'album comme celui-ci,

    Dim album As String = ""
    album = objMP3V1.Frame(MP3ID3v1.FrameTypes.Album)

Mais je ne savais pas comment vérifier la variable de l'album est vide ou non, j'ai vérifié variable album

    If (album = "") Then
        MsgBox("true")
    ElseIf (album Is Nothing) Then
        MsgBox("true")
    ElseIf (album Is DBNull.Value) Then
        MsgBox("true")
    End If

mais sans succès, quelqu'un peut me aider.

Était-ce utile?

La solution 2

Je l'ai utilisé l'expression régulière pour résoudre ce problème. Merci pour votre aide ...

Imports System.Text.RegularExpressions
dim RegEx As New RegularExpressions.Regex("^[a-zA-Z0-9]+$")
dim Match As Match
dim film as string
film = song.Frame(MP3ID3v1.FrameTypes.Album)
Match = RegEx.Match(film)
film1 = IIf((Match.Success), film.ToString, "")  

Si vous cherchez un tag plus professionnel editior Voici un lien !

Autres conseils

La balise ID3v1 est stocké dans les 128 derniers octets du fichier. Les trois premiers octets est révélateur « TAG » que le fichier stocke la balise. Alors d'abord vérifier si le fichier a une étiquette, puis les lire.

Je ne sais pas VB mais je pense avant de lire le cadre, vous devez d'abord:

  1. Ouvrez le fichier Dim objMP3V1 As New MP3ID3v1("file_path")
  2. test, si le fichier a une balise ID3v1 en elle en testant si l'indicateur de objMP3V1.TagExists est vrai
  3. Ensuite, lisez les champs / images.

EDIT

Le code dans le lien dit

FileGet(intFile, strTag, lngLOF - 127, True)
        If (strTag.ToUpper <> "TAG") Then

            ' No ID3v1 tag found

            mblnTagExists = False
            mobjFrame(0) = ""
            mobjFrame(1) = ""
            mobjFrame(2) = ""
            mobjFrame(3) = ""
            mobjFrame(4) = ""
            mobjFrame(5) = ""
            mobjFrame(6) = ""

        Else

            ' ID3v1 tag found

            mblnTagExists = True

            ' Read all frames from the file

            FileGet(intFile, strTitle)
            FileGet(intFile, strArtist)
            FileGet(intFile, strAlbum)
            FileGet(intFile, strYear)
            FileGet(intFile, strComment)
            FileGet(intFile, bytDummy)
            FileGet(intFile, bytTrack)
            FileGet(intFile, bytGenre)

            ' Assign the frame content to the properties

            mobjFrame(0) = strTitle
            mobjFrame(1) = strArtist
            mobjFrame(2) = strAlbum
            mobjFrame(3) = strYear
            mobjFrame(4) = bytTrack
            mobjFrame(5) = strComment
            mobjFrame(6) = bytGenre

        End If
    End If

Alors, si la balise n'est pas présent, alors il doit avoir "" désigné comme la chaîne.

champs ID3v1 sont de longueur fixe, donc s'il n'y a pas de chaîne dans le champ album alors il doit contenir une chaîne de num, qui est, le premier emplacement du champ contiendra un '\0' de caractère nul, donc il retournera une valeur nulle chaîne "". Je vous dis de vérifier la présente sur un fichier musical exemple avec des tags ID3v1. (Vous pouvez même créer un fichier texte formaté avec ID3v1 et tester).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top