Problème avec un compteur!!! grrr!

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Problème avec un compteur!!! grrr!

Message par gansta93 »

Bonjour,

J'ai un problème dans le code ci-dessous, j'ai l'impression que mon compteur ne marche pas.
Quelqu'un peut-il me dire pourquoi?

Code : Tout sélectionner

compteur=0

Procedure.s ListFiles(directory.s , filename.s, extension.s , directoryid.l )

  If Right(directory,1)<>"\"
    directory+"\"
  EndIf

  ExamineDirectory(directoryid,directory,"*.*")
  dirid=NextDirectoryEntry()
  While dirid
    Select dirid
      Case 1
        file.s=DirectoryEntryName()
        this_extension.s=LCase(GetExtensionPart(file))
        this_filename.s=LCase(Left(file,Len(file)-Len(this_extension)))
        If Len(this_extension)
          this_filename=Left(this_filename,Len(this_filename)-1)
        If this_extension=extension Or extension="*"
          If this_filename=filename Or filename="*"
            file.s=directory+DirectoryEntryName()
            ;file contains the full path and filename
            ;you must insert here what to do with the file
WriteStringN(file)
compteur=compteur+1
EndIf
EndIf
EndIf
      Case 2
        If DirectoryEntryName()<>"." And DirectoryEntryName()<>".."
          ListFiles(directory+DirectoryEntryName()+"\",filename,extension,directoryid+1)
          UseDirectory(directoryid)
        EndIf
    EndSelect
    dirid=NextDirectoryEntry()
  Wend
  ProcedureReturn ""
EndProcedure

folder$=PathRequester("Docier où seront listés les MP3","C:\")
If folder$
m3u$=SaveFileRequester("Enregistrer la PlayListe sous",folder$+"musiques.M3U","PlayListe M3U(*.M3U)|*.M3U)",0)
If m3u$
If GetExtensionPart(m3u$)=""
m3u$=m3u$+".M3U"
EndIf
If CreateFile(0,m3u$)
ListFiles(folder$,"*","mp3",0)      ; the last parameter should be zero
CloseFile(0)
If compteur=0
MessageRequester("M3U Generator","La PlayListe "+m3u$+" n'a pas étée créée car le répertoir "+folder$+" ne contenait aucun MP3.",#mb_ok|#mb_iconasterisk)
If DeleteFile(m3u$)=0
MessageRequester("Erreure","La Playliste vide n'a pas pu être supprimée.",#mb_ok|#mb_iconstop)
EndIf
Else
nombre$=Str(compteur)
MessageRequester("M3U Generator","La PlayListe "+m3u$+" a étée créée."+#crlf+"Elle contient "+nombre$+" MP3.",#mb_ok|#mb_iconasterisk)
EndIf
Else
MessageRequester("Erreure","Impossible de créer la PlayListe.",#mb_ok|#mb_iconstop)
EndIf
Else
MessageRequester("Erreure","Tu n'as pas sélectionné de titre pour la PlayListe.",#mb_ok|#mb_iconstop)
EndIf
Else
MessageRequester("Erreure","Tu n'as pas sélectionné le docier où les MP3 doivent être listés.",#mb_ok|#mb_iconstop)
EndIf
About("M3U Generator","Copyright "+#copyright+" "+FormatDate("%yyyy par Gansta93. Tous droits réservés.",Date()),0)
End
Oui y a pas de copyright mais bon... qui ne mait pas copyright dans ses programmes????? :-)
Pour le about() ou pour le #crlf qui n'est pas deffini cela vien de ma lib perso que je n'ai pas fini alors que je ne fais pas encore partager...

Code : Tout sélectionner

#crlf=Chr(13)+Chr(10)
le about() correspond à un shellabout_() avec le titre à propos deM3U Generator et de texte... le copyright.
Merci beaucoup d'avance.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Mets ta variable compteur en global, ou renvoie la par le ProcedureReturn.

Chris :)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

pas "docier" mais "dossier" :?

sinon pour ton compteur tu verifie en mettant un calldebugger
et tu regarde si ça marche !!
:)

ou bien un debug compteur

ha bah oui une variable dans une procedure est Local a celle-ci !!!
ça veut dire que sa valeur ne sort pas de la procedure !!!
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Donc il faudrait que je mette if ListFiles(folder$,"*","mp3",0)=0 pour que le compteur marche?
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Non, tu mets simplement Global compteur, puisque tu utilises cette variable à la fois dans la procédure et en dehors.

Code : Tout sélectionner

#crlf = Chr(10)+Chr(13)
compteur=0 

Global compteur ; <-------

Procedure.s ListFiles(directory.s , filename.s, extension.s , directoryid.l ) 
  
  If Right(directory,1)<>"\" 
    directory+"\" 
  EndIf 
  
  ExamineDirectory(directoryid,directory,"*.*") 
  dirid=NextDirectoryEntry() 
  While dirid 
    Select dirid 
      Case 1 
        file.s=DirectoryEntryName() 
        this_extension.s=LCase(GetExtensionPart(file)) 
        this_filename.s=LCase(Left(file,Len(file)-Len(this_extension))) 
        If Len(this_extension) 
          this_filename=Left(this_filename,Len(this_filename)-1) 
          If this_extension=extension Or extension="*" 
            If this_filename=filename Or filename="*" 
              file.s=directory+DirectoryEntryName() 
              ;file contains the full path and filename 
              ;you must insert here what to do with the file 
              WriteStringN(file) 
              compteur=compteur+1 
            EndIf 
          EndIf 
        EndIf 
      Case 2 
        If DirectoryEntryName()<>"." And DirectoryEntryName()<>".." 
          ListFiles(directory+DirectoryEntryName()+"\",filename,extension,directoryid+1) 
          UseDirectory(directoryid) 
        EndIf 
    EndSelect 
    dirid=NextDirectoryEntry() 
  Wend 
  ProcedureReturn "" 
EndProcedure 

folder$=PathRequester("Docier où seront listés les MP3","C:\") 
If folder$ 
  m3u$=SaveFileRequester("Enregistrer la PlayListe sous",folder$+"musiques.M3U","PlayListe M3U(*.M3U)|*.M3U)",0) 
  If m3u$ 
    If GetExtensionPart(m3u$)="" 
      m3u$=m3u$+".M3U" 
    EndIf 
    If CreateFile(0,m3u$) 
      ListFiles(folder$,"*","mp3",0)      ; the last parameter should be zero 
      CloseFile(0) 
      If compteur=0 
        MessageRequester("M3U Generator","La PlayListe "+m3u$+" n'a pas étée créée car le répertoir "+folder$+" ne contenait aucun MP3.",#MB_OK|#MB_ICONASTERISK) 
        If DeleteFile(m3u$)=0 
          MessageRequester("Erreure","La Playliste vide n'a pas pu être supprimée.",#MB_OK|#MB_ICONSTOP) 
        EndIf 
      Else 
        nombre$=Str(compteur) 
        MessageRequester("M3U Generator","La PlayListe "+m3u$+" a étée créée."+#crlf+"Elle contient "+nombre$+" MP3.",#MB_OK|#MB_ICONASTERISK) 
      EndIf 
    Else 
      MessageRequester("Erreure","Impossible de créer la PlayListe.",#MB_OK|#MB_ICONSTOP) 
    EndIf 
  Else 
    MessageRequester("Erreure","Tu n'as pas sélectionné de titre pour la PlayListe.",#MB_OK|#MB_ICONSTOP) 
  EndIf 
Else 
  MessageRequester("Erreure","Tu n'as pas sélectionné le docier où les MP3 doivent être listés.",#MB_OK|#MB_ICONSTOP) 
EndIf 
;About("M3U Generator","Copyright "+#copyright+" "+FormatDate("%yyyy par Gansta93. Tous droits réservés.",Date()),0) 
End
Chris :)
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Ah oui merci ça marche mieu maintenant.
Sinon je voulais savoir... est-ce qu'il y a moyen do connaître la durée d'un MP3 pour ensuite tout additionner et donner une longueure pour la playliste?
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Pas avec les commandes de Pure, à moins que Fred ne les ait modifiées, elles ne retournent pas de valeurs correctes sur les MP3.

Sinon, il faut passer par une librairie externe. (Fmod, par exemple).

Chris :)

PS: Après réflexion, il me semble qu'il y a une lib utilisateur qui peut lire les infos des MP3. Reste à savoir si la durée de la musique est inscrite dans le fichier.
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

D'accord... merci.
Sinon pour l'orthographe... y a-t-il d'autres fautes que docier? ah... il faudrait créer un correcteur d'orthographe pour le PureBasic :-)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

gansta93 a écrit :D'accord... merci.
Sinon pour l'orthographe... y a-t-il d'autres fautes que docier? ah... il faudrait créer un correcteur d'orthographe pour le PureBasic :-)
Malheureusement, oui :lol:

Erreure ==> erreur
répertoir ==> répertoire
La PlayListe "+m3u$+" a étée créée == été créée

Chris :)
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Chris a écrit :
gansta93 a écrit :D'accord... merci.
Sinon pour l'orthographe... y a-t-il d'autres fautes que docier? ah... il faudrait créer un correcteur d'orthographe pour le PureBasic :-)
Malheureusement, oui :lol:

Erreure ==> erreur
répertoir ==> répertoire
La PlayListe "+m3u$+" a étée créée == été créée

Chris :)
Arf.
Je désespère.
J'espère souvant que plus mauvais que moi n''existe pas.
Né en france avec ça :-). Merci pour les corrections... mais pour mon correcteur si je trouve du monde et de l'expériance et des gars je veux bien.
Sinon ça y est... j'ai créé ma PlayListe... ça marche bien... touts les MP3 de mon D: tournent en ordre alphabétiques et par dociers... merci pour votre aide...
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

l'expériance
:D

ça serai pas plutôt l'experience ?? :wink: :D
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Arf ça devient désespérant... et c'est l'expérience :-)... sinon j'ai encore un problème et je croi que c'est le dernier dans ce programme... mais pas sur je suis aussi bon que microsoft (au niveau des erreurs).
Je ne comprand pas un truc.
Je lui fais vérifier si l'extension est bien M3U, M3u, m3U, ou m3u et il trouve quand même le moyen de me mettre du M3U.M3U. Comment cela se fait-il?
Pourtant la vérification est complaite!
Quelqu'un voit-il le problème?
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

J'ai testé plusieurs fois sur le code que tu as posté, jamais il ne m'a doublé l'extension comme ça.

Si tu as modifié le code, reposte la partie qui fait la vérification.

Pour info, tu peux avoir ce problème si tu fais comme ça:

Code : Tout sélectionner

    If GetExtensionPart(m3u$)<>".m3u" 
      m3u$=m3u$+".M3U"
    EndIf 
Dans ce cas, tu fais une comparaison entre l'extension retournée m3u et .m3u
Du coup, tu rajoutes l'extension puisque la comparaison est fausse.

Chris :)
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Re,

Normalemant, je n'ai rien changé à la vérification mais je remait le bout de code qui la concerne.

Code : Tout sélectionner

ext$=GetExtensionPart(m3u$)
If ext$<>"m3u" Or ext$<>"M3U" Or ext$<>"M3u" Or ext$<>"m3U"
m3u$=m3u$+".M3U"
EndIf
Et j'ai bien la création du fichier et les autres opérations après.
Je ne comprand pas pourquoi il me fait ça.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

pourquoi tu fait

Code : Tout sélectionner

ext$=GetExtensionPart(m3u$)
If ext$<>"m3u" Or ext$<>"M3U" Or ext$<>"M3u" Or ext$<>"m3U"
m3u$=m3u$+".M3U"
EndIf 

????????? 8O

un simple

Code : Tout sélectionner

 ext$=GetExtensionPart(m3u$)
If ext$<>"m3u" 
    m3u$=left(m3u$, len(m3u$)-4)   ; Important il faut retirer les 4 derniers characteres (l'extention+le point)
    m3u$=m3u$+".M3U" ; maintenant on met la bonne extention
endif
n'aurai pas suffis ??

windows contrairement a Linux ne fait pas la difference entre les majuscule et minuscule !!! :)
Dernière modification par Backup le mer. 14/juil./2004 20:42, modifié 4 fois.
Répondre