Danke, jetzt gehts, aber ich hab noch n leichtes Problem... wieso stürtzt diese Procedure nach dem 6. Aufruf mit einem "Invalid Memory Access" bei EndProcedure ab
Code: Alles auswählen
Procedure id3get(pos)
artist.s=""
songtitle.s=""
album.s=""
genre.s=""
year.s=""
tag.FMOD_TAG
numtags=0
If CallFunction(0, "FMOD_System_CreateStream", system,GetGadgetItemText(#Listview_pl,pos,4), #FMOD_SOFTWARE | #FMOD_ACCURATETIME, 0, @sound)=#FMOD_OK
CallFunction(0, "FMOD_Sound_GetNumTags",sound,@numtags,0)
For x=0 To numtags-1
tag.FMOD_TAG
CallFunction(0,"FMOD_Sound_GetTag",sound,0,x,@tag)
If tag\type=#FMOD_TAGTYPE_ID3V1
url=0
If tag\name="TITLE"
songtitle.s=tag\_Data
ElseIf tag\name="ARTIST"
artist.s=tag\_Data
ElseIf tag\name="ALBUM"
album.s=tag\_Data
ElseIf tag\name="YEAR"
year.s=tag\_Data
ElseIf tag\name="GENRE"
genre3=Val(tag\_Data)
For i = 0 To 146
If genre3 = i
genre.s=genre1(i)
EndIf
Next
EndIf
ElseIf tag\type=#FMOD_TAGTYPE_ID3V2
url=0
If tag\name="TRCK"
Tracknr.s=tag\_Data
ElseIf tag\name="TYER"
Year.s=tag\_Data
ElseIf tag\name="TCON"
Genre.s=tag\_Data
ElseIf tag\name="TIT2"
Songtitle.s=tag\_Data
ElseIf tag\name="TALB"
Album.s=tag\_Data
ElseIf tag\name="TPE1"
Artist.s=tag\_Data
EndIf
ElseIf tag\type=#FMOD_TAGTYPE_VORBISCOMMENT
url=0
If tag\name="TITLE"
songtitle.s=tag\_Data
ElseIf tag\name="ARTIST"
artist.s=tag\_Data
ElseIf tag\name="ALBUM"
album.s=tag\_Data
ElseIf tag\name="Date"
year.s=tag\_Data
ElseIf tag\name="GENRE"
genre=tag\_Data
EndIf
ElseIf tag\type=#FMOD_TAGTYPE_SHOUTCAST
url=1
If tag\name="icy-notice1"
icynotice1.s=tag\_Data
ElseIf tag\name="icy-notice2"
icynotice2.s=tag\_Data
ElseIf tag\name="icy-name"
icyname.s=tag\_Data
ElseIf tag\name="icy-genre"
icygenre.s=tag\_Data
ElseIf tag\name="icy-url"
icyurl.s=tag\_Data
ElseIf tag\name="icy-br"
icybitrate.s=tag\_Data
ElseIf tag\name="icy-irc"
icyirc.s=tag\_Data
ElseIf tag\name="icy-icq"
icyicq.s=tag\_Data
EndIf
ElseIf tag\type=#FMOD_TAGTYPE_ICECAST
url=1
If tag\name="icy-notice1"
icynotice1.s=tag\_Data
ElseIf tag\name="icy-notice2"
icynotice2.s=tag\_Data
ElseIf tag\name="icy-name"
icyname.s=tag\_Data
ElseIf tag\name="icy-genre"
icygenre.s=tag\_Data
ElseIf tag\name="icy-url"
icyurl.s=tag\_Data
ElseIf tag\name="icy-br"
icybitrate.s=tag\_Data
ElseIf tag\name="icy-irc"
icyirc.s=tag\_Data
ElseIf tag\name="icy-icq"
icyicq.s=tag\_Data
EndIf
ElseIf tag\type=#FMOD_TAGTYPE_PLAYLIST
url=0
If tag\name="FILE"
file.s=tag\_Data
ElseIf tag\name="TITLE"
title.s=tag\_Data
ElseIf tag\name="LENGTH"
length.s=tag\_Data
EndIf
AddGadgetItem(#Listview_pl,-1,Str(CountGadgetItems(#Listview_pl)-1)+Chr(10)+title+Chr(10)+""+Chr(10)+length+Chr(10)+file)
If Not title Or Not length
id3get(CountGadgetItems(#Listview_pl)-1)
EndIf
ElseIf tag\type=#FMOD_TAGTYPE_ASF
Debug "--------ASF--------------"
ElseIf tag\type=#FMOD_TAGTYPE_MIDI
Debug "----------MIDI------------"
ElseIf tag\type=#FMOD_TAGTYPE_FMOD
Debug "---------FMOD-------------"
EndIf
Next
CallFunction(0, "FMOD_Sound_Release", sound)
EndIf
EndProcedure
Irgendwelche Fehler? Oder kann es sein dass die tolle FMODex etwas buggy ist?
P.S: Vor der Procedure initiiere ich die FMODex folgendermaßen:
Code: Alles auswählen
OpenLibrary(0,"fmodex.dll")
CallFunction(0,"FMOD_System_Create", @system)
CallFunction(0, "FMOD_System_Init", system, 32, #FMOD_INIT_NORMAL, 0)