Вопрос

Я делаю проект в VB.NET 2005, в котором я должен извлечь информацию о теге файлов MP3. Для этой цели я использовал код в этом страница. Анкет Но проблема в том, когда один из тегов пуста, он не вернул никаких значений.

Например, используя это, я могу получить информацию о альбоме, подобную этой,

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

Но я не знал, как проверить переменную альбома пуста или нет, я проверил переменную альбома

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

Но нет успеха, может кто -нибудь мне помочь.

Это было полезно?

Решение 2

Я использовал регулярное выражение, чтобы решить эту проблему. Спасибо за вашу помощь...

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, "")  

Если вы ищете больше профессионального редактора тегов, вот ссылка!

Другие советы

Тег ID3V1 хранится в последних 128 байтах файла. Первые три байта - это «тег», сообщающий, что файл хранит тег. Поэтому сначала проверьте, есть ли в файле тег, затем прочитайте его.

Я не знаю VB, но я думаю, что прежде чем читать кадр, вы должны сначала:

  1. Откройте файл Dim objMP3V1 As New MP3ID3v1("file_path")
  2. Проверьте, если в файле есть тег ID3V1, тестируя, если objMP3V1.TagExists Флаг верен
  3. Затем прочитайте поля/рамки.

РЕДАКТИРОВАТЬ

Код в ссылке говорит

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

Итак, если тег отсутствует, то он должен иметь "" назначен как строка.

Поля ID3V1 имеют фиксированную длину, поэтому, если в строке нет строки в album Поле, тогда он должен содержать num String, то есть первое местоположение поля будет содержать нулевый символ '\0', поэтому он вернет нулевую строку "". Анкет Я бы сказал вам проверить это в примере музыкального файла с тегами ID3V1. (Вы даже можете создать текстовый файл, отформатированный с ID3V1 и проверить его).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top