Page 1 sur 1
Erreur ***FREE***
Publié : lun. 02/nov./2009 15:43
par Emperor
Je viens d'avoir la plus bizarre et non-explicite des erreurs de compilation. "Ligne 26 = ***FREE***"
Qu'est-ce que ça veut dire???
Voici le code:
Code : Tout sélectionner
Procedure setPlaylist(file$,*list,*struct.mp3)
While found
file$ = NextSelectedFileName()
If file$ = ""
found = 0
Else
getmp3Tag(file$,*struct)
*struct\path = file$
GetMP3Info(file$,*struct)
*ptr = AddMapElement(*list,*struct\path)
*ptr = *struct
EndIf
Wend
EndProcedure
Re: Erreur ***FREE***
Publié : lun. 02/nov./2009 16:08
par Le Soldat Inconnu
avec un code incomplet, on ne risque pas de trouver.
Donne au moins quelque chose qui compile, parce que la ....
Re: Erreur ***FREE***
Publié : lun. 02/nov./2009 16:12
par Emperor
Pas de problème:
OPERATION.PBI:
Code : Tout sélectionner
; Structure MP3INFO
; fileSize.l ; in bytes
; fileLength.l ; in miliseconds
; bitrate.l ; in bps. if negative: variable bitrate,bitrate=negated average
; frequency.l ; in Hertz
; nFrames.l ; number of MPEG frames
; EndStructure
;
; Structure track
; name.s ;track name
; path.s ;file path
; infos.MP3INFO
; EndStructure
Declare getmp3Tag(file$,*struct.mp3)
Procedure setPlaylist(file$,*list,*struct.mp3)
While found
file$ = NextSelectedFileName()
If file$ = ""
found = 0
Else
getmp3Tag(file$,*struct)
*struct\path = file$
GetMP3Info(file$,*struct)
*ptr = AddMapElement(*list,*struct\path)
*ptr = *struct
EndIf
Wend
EndProcedure
Procedure getmp3Tag(file$,*struct.mp3)
If ReadFile(0,File$)
*MemPointer = AllocateMemory(128) ; 128 byte reservieren
If *MemPointer
FileSeek(0,Lof(0)-128)
ReadData(0,*MemPointer, 128) ; die letzten 128 byte der Datei auslesen
; Debug mempointer
CloseFile(0)
header$ = PeekS(*MemPointer, 3)
If header$ = "TAG" ; 3 Zeichen
*struct\title = Trim(PeekS(*MemPointer + 3,30)) ; 30 Zeichen
*struct\artist = Trim(PeekS(*MemPointer + 33,30)) ; 30 Zeichen
*struct\album = Trim(PeekS(*MemPointer + 63,30)) ; 30 Zeichen
*struct\year = Trim(PeekS(*MemPointer + 93, 4)) ; 4 Zeichen
*struct\comment = Trim(PeekS(*MemPointer + 97,30)) ; 30 Zeichen
*struct\genre = PeekB(*MemPointer + 127) ; 1 Zeichen
EndIf
EndIf
Else
MessageRequester("Error","Bitte Wählen Sie eine MP3 Datei aus!",0)
EndIf
EndProcedure
MAIN.PB
Code : Tout sélectionner
Macro p ;pattern
pattern$=pattern$ +
EndMacro
;structures
Structure MP3INFO
fileSize.l ; in bytes
fileLength.l ; in miliseconds
bitrate.l ; in bps. if negative: variable bitrate,bitrate=negated average
frequency.l ; in Hertz
nFrames.l ; number of MPEG frames
EndStructure
Structure mp3 Extends MP3INFO
title.s
artist.s
album.s
genre.b
comments.s
year.s
path.s
EndStructure
; Includes
; Files Operations:
XIncludeFile "files.pbi"
; Controls Window:
XIncludeFile "ctrls.pbi"
; Playlists and tracklists Window:
XIncludeFile "lists.pbi"
; Global operations:
XIncludeFile "operations.pbi"
; Pattern for files which are taken by the prog
pattern$ = "Fichiers de Son|*.mid;*.midi;*.mp3;*.mod;*.ogg;*.flac;*.wav;*.mpl|" ;index 0
p "Fichiers MIDI|*.mid;*.midi|" ;index 1
p "Fichiers MP3|*.mp3|" ;index 2
p "Fichiers Module|*.mod|" ;index 3
p "Fichiers OGG|*.ogg|" ;index 4
p "Fichiers FLAC|*.flac|" ;index 5
p "Fichiers WAVE|*.wav|" ;index 6
p "Liste de Lecture|*.mpl;*.m3u" ;index 7
; playlist map:
Global NewMap nowPlaylist.track()
Declare showPlaylist(*list)
isOpenLists.b = 0
isOpenLists = open_Lists()
open_Controls()
;...
Repeat
EVENT = WaitWindowEvent()
Select EVENT
Case #PB_Event_CloseWindow
Select EventWindow()
Case #ctrls
If isOpenLists
CloseWindow(#lists)
EndIf
CloseWindow(#ctrls)
End
Case #lists
If isOpenLists
CloseWindow(#lists)
isOpenLists = 0
EndIf
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case #ouvrir
file$=getFile(pattern$)
song.mp3
setPlaylist(file$,@nowPlaylist(),@song)
showPlaylist(@nowPlaylist())
Case #save
Case #quitter
Case #options
Case #about
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case #back
Case #play
Case #pause
Case #stop
Case #next
Case #mute
Case #volume
Case #timer
EndSelect
EndSelect
ForEver
Procedure showPlaylist(*list)
While NextMapElement(*list)
length$ = Str(Int((*list\fileLength) / 1000))
AddGadgetItem(#tracklist,-1,length$+Chr(10)+*list\title+Chr(10)+*list\artist+Chr(10)+*list\album)
Wend
EndProcedure
Voila. Si j'en ai pas assez mis, je peux rajouter mes 3 autres includes

Re: Erreur ***FREE***
Publié : lun. 02/nov./2009 17:23
par comtois
la liste des messages se trouve dans le répertoire catalogs de purebasic, dans le fichier compiler.catalog, il faudrait le comparer avec le fichier anglais et le compléter.
C'est encore en beta, il faudra attendre la version finale.
Extrait :
139 = La liste suivante est deja declaree: %s.
140 = *** FREE ***
141 = 'ElseIf' ne peut pas etre utilise apres 'Else'.
Re: Erreur ***FREE***
Publié : lun. 02/nov./2009 20:26
par comtois
à quoi ça sert que tu déclares une map en globale si c'est pour la passer en paramètre ensuite ?
Code : Tout sélectionner
Global NewMap nowPlaylist.track()
...
setPlaylist(file$,@nowPlaylist(),@song)
Et il y a une erreur dans le paramètre de cette procédure
il faut utiliser le mot clé Map (List pour une liste en paramètre et Array pour un tableau en paramètre), et ça devient :
Code : Tout sélectionner
Procedure setPlaylist(file$,Map *list.track(),*struct.mp3)
EndProcedure
Et voila un code pour afficher ton message
Code : Tout sélectionner
NewMap toto.POINT()
Procedure Test(*List)
AddMapElement(*list,"titi")
EndProcedure
TEST(toto())
en anglais le message est le suivant , et c'est curieux , je ne trouve pas ce texte dans le fichier compiler.catalog !
---------------------------
PureBasic
---------------------------
Line 4: Bad parameter type: a map is expected.
---------------------------
OK
---------------------------
Re: Erreur ***FREE***
Publié : lun. 02/nov./2009 21:37
par Emperor
merci comtois, jallais le corriger, mais impossible d'avancer plus quand il y a une erreur de ce genre.
Merci beaucoup

Re: Erreur ***FREE***
Publié : lun. 02/nov./2009 23:25
par comtois
Si tu veux le message en clair, tu peux éditer ton fichier compiler.catalog dans le répertoire catalogs\Francais
103 = Type du parametre incorrect: une Map est attendue.