Zudem habe ich eine Frage. Warum liest mir der Code bei diesem Ausschnitt immer Mist aus:
Nicht das ich probiert hätte die Datei in Unicode, oder UTF-8 auszulesen, aber dann bekomme ich an dieser Stelle "Fragezeichenbrei".#EXTINF:264,冨田勲 – Boléro
C:\Dokumente und Einstellungen\All Users\Dokumente\Eigene Musik\Titel irgendeinenummer.mp3
Code: Alles auswählen
Structure M3U
M3U_Lenght.l
M3U_Tags.s
M3U_File.s
EndStructure
NewList M3UData.M3U()
Enumeration
#EXTM3U
#M3U
#M3U_FileList
EndEnumeration
Procedure.s CheckLineFeed(RString.s)
If Not FindString(RString.s,#CRLF$,1)
If FindString(RString.s,Chr(10),1)
LF.s = Chr(10)
ElseIf FindString(RString.s,#CR$,1)
LF.s = #CR$
EndIf
Else
LF.s = #CRLF$
EndIf
ProcedureReturn LF.s
EndProcedure
Procedure AddEXTM3UData(RString.s,M3UData.M3U(),FileID=0)
If RString.s
If Not FileID = 0
Debug FileID
RString2.s= ReadString(FileID)
RString.s + #CRLF$
RString.s + RString2.s
EndIf
AddElement(M3UData())
M3UData()\M3U_Lenght.l = Val(Mid(RString.s,FindString(RString.s,"#EXTINF:",1)+8,(FindString(RString.s,",",1))-(FindString(RString.s,"#EXTINF:",1)+8)))
M3UData()\M3U_Tags.s = Mid(RString.s,FindString(RString.s,",",1)+1,(FindString(RString.s,#CRLF$,1))-(FindString(RString.s,",",1)+1))
M3UData()\M3U_File.s = Mid(RString.s,FindString(RString.s,#CRLF$,1)+2,Len(RString.s)-(FindString(RString.s,#CRLF$,1)+1))
EndIf
EndProcedure
Procedure LoadM3U(FileName.s,M3UData.M3U())
Protected FileSize.l,FileID.l,RString.s
If FileName.s
FileSize.l = FileSize(FileName.s)
If Not FileSize < 0
FileID.l=ReadFile(#PB_Any,FileName.s)
If FileID.l
RString.s=ReadString(FileID.l)
If FindString(RString.s,"#EXTM3U",1)
DataWay.l = #EXTM3U
LF.s=CheckLineFeed(RString.s)
If Not LF.s
RString.s = ReadString(FileID.l)
LF.s=CheckLineFeed(RString.s)
EndIf
ElseIf FindString(RString.s,"#M3U",1)
DataWay.l = #M3U
LF.s=CheckLineFeed(RString.s)
If Not LF.s
RString.s = ReadString(FileID.l)
LF.s=CheckLineFeed(RString.s)
EndIf
Else
DataWay.l = #M3U_FileList
LF.s=CheckLineFeed(RString.s)
EndIf
EndIf
If Not FL.s = #CR$ And Not FL.s = Chr(10)
If DataWay.l = #EXTM3U
If Not FindString(RString.s,"#EXTINF",1)
RString.s = ReadString(FileID)
EndIf
AddEXTM3UData(RString.s,M3UData(),FileID)
While Eof(FileID) = 0
RString.s = ReadString(FileID) + #CRLF$ + ReadString(FileID)
AddEXTM3UData(RString.s,M3UData())
Wend
ElseIf DataWay.l = #M3U
If FindString(RString.s,"#M3U",1)
RString.s = ReadString(FileID)
EndIf
AddElement(M3UData())
M3UData()\M3U_File.s = RString.s
While Eof(FileID) = 0
RString.s = ReadString(FileID)
AddElement(M3UData())
M3UData()\M3U_File.s = RString.s
Wend
ElseIf DataWay.l = #M3U_FileList
AddElement(M3UData())
M3UData()\M3U_File.s = RString.s
While Eof(FileID) = 0
RString.s = ReadString(FileID)
AddElement(M3UData())
M3UData()\M3U_File.s = RString.s
Wend
EndIf
Else
EndIf
EndIf
EndIf
EndProcedure
File.s="DATEIANGEBEN!"
LoadM3U(File.s,M3UData())
Debug CountList(M3UData())
ResetList(M3UData())
While NextElement(M3UData())
Debug M3UData()\M3U_Lenght.l
Debug M3UData()\M3U_Tags.s
Debug M3UData()\M3U_File.s
Debug ""
Wend
Code: Alles auswählen
#EXTM3U
#EXTINF:221,Queen - Bohemian Rhapsody
Titel 1.mp3
#EXTINF:473,Dire Straits - Walk Of Life
Pop\Meine Auswahl\Titel 2.mp3
#EXTINF:264,Test – Boléro
C:\Dokumente und Einstellungen\All Users\Dokumente\Eigene Musik\Titel irgendeinenummer.mp3
#EXTINF:504,Bob Marley - Buffalo Soldier
http://www.seite.de/musik/titel4.mp3