Rubrik: Multimedia & Sound · Audio | VB-Versionen: VB5, VB6 | 28.12.02 |
Auslesen einer .m3u-Datei Dieses Beispiel zeigt, wie sich eine .m3u-Datei in ein String-Array auslesen lässt. | ||
Autor: Jochum Rene | Bewertung: | Views: 26.816 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Bei M3U (.m3u) handelt es sich um eine Dateierweiterung für eine "Abspielliste" von MP3 Audio-Dateien, welche von vielen Media-Player verwendet werden, u.a. auch von WinAmp. Hierbei enthält eine M3U-Datei lediglich Informationen, wo sich die MP3-Datei befindet - entweder lokal auf dem System oder auch im Internet.
Das nachfolgende Beispiel zeigt, wie sich eine solche M3U-Datei auslesen lässt. Die Funktion selbst gibt die Dateinamen in einem String-Array als Rückgabewert zurück. Über den optionalen Parameter bOnlyIfExists können Sie angeben, ob hierbei nur MP3s ausgelesen werden sollen, die auch lokal auf dem System existieren.
Und hier die Funktion:
Public Function fGetM3u(ByVal sM3uFile As String, _ Optional ByVal bOnlyIfExist As Boolean = False) As Variant Dim F As Integer Dim sLine As String Dim nCount As Long Dim nUBound As Long Dim bResult As Boolean Dim sPlayList As Variant ' Datei auslesen nCount = -1 ReDim sPlayList(0) F = FreeFile Open sM3uFile For Input As #F While Not EOF(F) Line Input #F, sLine If Left$(sLine, 1) <> "#" Then ' Jepp, it's a Path... bResult = True If bOnlyIfExist Then ' ...prüfen, ob Datei existsiert On Error Resume Next bResult = (Dir$(sLine) <> "") If Err <> 0 Then bResult = False On Error GoTo 0 End If If bResult Then ' und ab ins Array nCount = nCount + 1 If nCount > nUBound Then nUBound = 2 * nCount ReDim Preserve sPlayList(nUBound) End If sPlayList(nCount) = sLine End If End If Wend Close #F ' Array-Größe "korrigieren" If nCount >= 0 Then ReDim Preserve sPlayList(nCount) fGetM3u = sPlayList End If End Function
Beispiel für den Aufruf:
Dim myList As Variant myList = fGetM3u(App.Path & "\Playlist.m3u", False) ' Alle Einträge in einer ListBox anzeigen If IsArray(myList) Then Dim i As Integer For i = 0 To UBound(myList) List1.AddItem myList(i) Next i End If