In dem Tipp Auslesen einer .m3u-Datei wurde Ihnen gezeigt, wie Sie die Liste der MP3-Dateien einer Playlist in ein Array einlesen. Dabei wurde eine mehr oder weniger nützliche Angabe einfach "übergangen": Nämlich die Angabe, wie lang die MP3-Datei ist. Dieses Beispiel listet alle MP3-Dateien in der Liste inkl. der Tracklänge in einem Listview auf. Hier der Code: ' Liest eine Playlist (m3u-Datei) in ein ListView-Control Function ReadM3U(ByVal sFilename As String, _ LV_Playlist As ListView) As Boolean Dim Textzeile As String Dim Zeile As Long Dim Wrong As Boolean Dim LastZeile As String Dim strLVText As String Dim stred As Long Dim Laenge As String Dim Laenge_Text As String Dim FileTitle As String Dim FileExt As String Dim Laenge_tmp Dim F As Integer On Error GoTo ErrHandler With LV_Playlist ' ListView-Spalten erstellen .Sorted = False .View = lvwReport .ColumnHeaders.Clear .ColumnHeaders.Add , , "Titel / Dateiname", .Width - 1600 .ColumnHeaders.Add , , "Länge", 1000, 1 ' ListView-Einträge löschen .ListItems.Clear ' Playlist auslesen Zeile = 0 F = FreeFile Open sFilename For Input As #F ' Schleife bis Dateiende Do While Not EOF(F) Zeile = Zeile + 1 ' Zeile in Variable einlesen. Line Input #F, Textzeile If Zeile = 1 And Textzeile <> "#EXTM3U" Then Wrong = True End If If Left$(LastZeile, 8) = "#EXTINF:" Then ' zusätzliche Infos der zuletzt eingelesenen ' Zeile auswerten strLVText = Right$(LastZeile, Len(LastZeile) - 8) ' Länge (Spieldauer) ermitteln stred = InStr(strLVText, ",") If stred > 0 Then Laenge = Left$(strLVText, stred - 1) Laenge_Text = Format(Laenge / 60, "00.00") Laenge_Text = ReplaceM(Laenge_Text, ",", ":", ".", ":") strLVText = Right$(strLVText, Len(strLVText) - stred) Laenge_tmp = "": stred = 0 stred = InStr(Laenge_Text, ":") If stred > 0 Then Laenge_tmp = Right$(Laenge_Text, Len(Laenge_Text) - stred) Laenge_tmp = Format((Laenge_tmp / 99) * 60, "0") Laenge_tmp = Format(Laenge_tmp, "00") Laenge_Text = Left$(Laenge_Text, stred - 1) & ":" & Laenge_tmp End If End If ' Titel FileTitle = GetFileFromPath(Textzeile) FileExt = GetFileExt(FileTitle) If FileExt <> "" Then FileExt = "." & FileExt FileTitle = Left$(FileTitle, Len(FileTitle) - Len(FileExt)) ' Aktuellen Titel im ListView anzeigen If FileTitle <> strLVText Then .ListItems.Add , , strLVText & " - [" & Textzeile & "]" Else .ListItems.Add , , strLVText End If .ListItems(.ListItems.Count).SubItems(1) = Laenge_Text End If LastZeile = Textzeile Loop ' Datei schließen. Close #F End With ErrHandler: If Err > 0 Then Wrong = True ReadM3U = (Wrong = False) End Function Hilfsfunktionen: ' Hilfsfunktion: String-Ersetzen Function ReplaceM(ByVal FromStr As String, _ ParamArray varReplacements() As Variant) As String Dim intMacro As Integer Dim strResString As String Dim nFrom As Integer Dim nTo As Integer Dim strMacro As String Dim strValue As String On Error Resume Next strResString = FromStr ' Für jedes übergebene Makro/Wert-Paar... nFrom = LBound(varReplacements) nTo = UBound(varReplacements) For intMacro = nFrom To nTo Step 2 strMacro = varReplacements(intMacro) strValue = varReplacements(intMacro + 1) On Error GoTo 0 ' Ersetzen aller vorkommenden strMacro ' durch strValue Dim intPos As Integer Do intPos = InStr(strResString, strMacro) If intPos > 0 Then strResString = Left$(strResString, intPos - 1) & _ strValue & Right$(strResString, _ Len(strResString) - Len(strMacro) - intPos + 1) End If Loop Until intPos = 0 Next intMacro ReplaceM = strResString On Error GoTo 0 Exit Function End Function ' Hilfsfunktion ' Ermittelt die Dateierweiterung eines Dateinamens Function GetFileExt(Pfadname As String) Dim Dateinamen As String Dim Länge As Integer Dim n As Integer Dim Position As Integer Länge = Len(Pfadname) Do n = InStr(n + 1, Pfadname, ".") If n = 0 Then Exit Do Position = n Loop If Position <> 0 Then GetFileExt = StrConv(Right$(Pfadname, _ Länge - Position), vbUpperCase) End If End Function ' Hilfsfunktion ' Ermittelt den Dateinamen aus Pfad+Datei Function GetFileFromPath(Pfadname As String) Dim Dateinamen As String Dim Länge As Integer Dim n As Integer Dim Position As Integer Länge = Len(Pfadname) Do n = InStr(n + 1, Pfadname, "\") If n = 0 Then Exit Do Position = n Loop GetFileFromPath = Right$(Pfadname, _ Länge - Position) End Function Beispiel: Fügen Sie obigen Code in das Codefenster der Form1 ein. Beim Starten der Form soll dann eine bestimmte Playliste ausgelesen und angezeigt werden: Private Sub Form_Load() ' Playlist anzeigen ReadM3U "MyPlaylist.m3u", ListView1 End Sub Dieser Tipp wurde bereits 16.011 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats September 2024 Dieter Otter Übergabeparameter: String oder Array? Mit der IsArray-Funktion lässt sich prüfen, ob es sich bei einem Übergabeparameter an eine Prozedur um ein Array oder einer "einfachen" Variable handelt. Neu! sevDTA 3.0 Pro SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |