compter les éléments d'un fichier

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Invité

compter les éléments d'un fichier

Message par Invité »

j'aimerai savoir comment faire pour compter les élements d'un fichier

je m'explique

j'aimerai à chaque fois que je rajoute un élément dans mon fichier, que mon programme me dise "aujourd'hui 20 mars 2004, il y a x dans le programme"


merci beaucoup
CORBASE
Messages : 96
Inscription : mar. 24/févr./2004 14:06

Message par CORBASE »

Bah, le plus simple c'est que tu fasse ecrire une ligne par x dans ton fichier, comme sa après tu ne compte que le nombre de ligne :P
Invité

Message par Invité »

mais en fait je veux connaitre le nombre d'elements répertories dans le fichier

ces éléments je les ais déja rentres
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Si tu donnais un exemple de la façon dont tu as fait ton fichier, ce serait certainement plus simple de t'aider!

Comment sont stockées les données?

Une par ligne...
Plusieurs par lignes, séparées par un caractère...

Chris :)
Invité

Message par Invité »

Code : Tout sélectionner

 If CreatePreferences(Fichier) ; On crée un fichier de préférences, c'est plus simple qu'un fichier normal au niveau de la gestion 
      
      WritePreferenceString("Titre", Titre) 
      WritePreferenceString("Réalisateur", realisateur) 
      WritePreferenceString("Acteur 1", acteur1) 
      WritePreferenceString("Acteur 2", acteur2) 
      WritePreferenceString("Acteur 3", acteur3) 
      WritePreferenceString("Durée", duree) 
      WritePreferenceString("Origine", origine) 
      WritePreferenceString("Année", annee) 
      WritePreferenceString("Producteur", producteur) 
      WritePreferenceString("nom de l'emprunteur",personne)
      WritePreferenceString ("date de pret",prete)
      WritePreferenceString("date de retour",retour)
      ClosePreferences() 
      
      MessageRequester("Validation", "Le film " + titre + " est bien enregistré") 
      
    Else 
      MessageRequester("probleme", "impossible de creer le fichier", 0) 
    EndIf 
    
voila ce que j'aimerai savoir c'est comment compter le nombre de titre de films enregistré dans mon fichier
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

A mon avis, tu te casse bien la tête pour pas grand chose, là!

Si tu crée une liste chainée avec tous les paramètres, tu peux enregistrer chaque film, avec tous les paramètres le concernant, séparés par un caractère, par ex. une virgule, sur une seule ligne.

Tu as donc un film par ligne, et il te suffit ensuite de compter les lignes dans le fichier, ou même d'enregistrer le nombre de films au début, ou à la fin du fichier. La fonction CountList(Liste()) te donnes cette valeur.

Chris :)
Invité

Message par Invité »

ca a l'air tres simple pour toi, mais ca l'est beaucoup moin pour moi

:oops:

si tu pouvais me donner un example, ca m'arrangerait bien car j'ai vraiment l'impression de patoger

merci :wink:
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Code : Tout sélectionner

; Tu commences par créer ta liste, avec tous les paramètres

Structure FILM
  titre.s
  realisateur.s 
  acteur1.s 
  acteur2.s 
  acteur3.s 
  duree.s 
  origine.s 
  annee.s 
  producteur.s 
  personne.s
  prete.s 
  retour.s
EndStructure
NewList MesFilms.FILM()

; Ensuite, tu entres les paramètres.

; Film 1
AddElement(MesFilms())
MesFilms()\titre = "Le film du siècle"
MesFilms()\realisateur = "Gilbert DUPONT"
MesFilms()\acteur1 = "Robert TARTEMPION"
MesFilms()\acteur2 = "Roger DUGLAND"
MesFilms()\acteur3 = "Michel DUCHMOLL"
MesFilms()\duree = "257"
MesFilms()\origine = "Indeterminee"
MesFilms()\producteur = "Emile SANS-LE-SOU"
MesFilms()\personne = "Arsène LUPIN"
MesFilms()\prete = "23/12/98"
MesFilms()\retour = "Jamais"

; Film 2
AddElement(MesFilms())
MesFilms()\titre = "Une grosse bouse"
MesFilms()\realisateur = "Inconnu"
MesFilms()\acteur1 = "Georges GROSNUL"
MesFilms()\acteur2 = ""
MesFilms()\acteur3 = ""
MesFilms()\duree = "302"
MesFilms()\origine = "France"
MesFilms()\producteur = "Paul-Henry PAS De TUNE"
MesFilms()\personne = "Monsieur X"
MesFilms()\prete = "19/03/2003 à 08:30"
MesFilms()\retour = "19/03/2003 à 08:31"

; Enregistrement dans le fichier
OpenFile(0,"MesFilms.txt")      ; On ouvre un nouveau fichier si il n'existe pas
                                ; sinon, on ouvre le fichier existant
WriteStringN(Str(CountList(MesFilms())))
ForEach MesFilms()
  C$ = MesFilms()\titre + ";"+MesFilms()\realisateur+";"+MesFilms()\acteur1+";"+MesFilms()\acteur2+";"+MesFilms()\acteur3+";"+MesFilms()\duree+";"+MesFilms()\origine+";"+MesFilms()\producteur+";"+MesFilms()\personne+";"+MesFilms()\prete+";"+MesFilms()\retour
  WriteStringN(C$)
Next
CloseFile(0)

; Naturellement, tu n'entres pas chaque donnée comme ça. il faut faire une interface
; sinon, ça va vite devenir ingèrable

; Pour voir ce qui est enregistré:
If FileSize("MesFilms.txt")<>-1
  OpenFile(0,"MesFilms.txt")
  NbFilms = Val(ReadString())
  For i = 0 To NbFilms -1
    Debug ReadString()
  Next
EndIf

; Pour récupérer chaque champs, tu dois utiliser la fonction StringField()
; Voir l'aide dans "String"
; Pour remettre les valeurs dans la liste, tu fais comme au début de l'exemple.

; Bon, j'admet que c'est un peu brouillon, comme exemple, mais en si peu de temps, c'est
; pas trop facile de faire quelque chose de bien.
Si tu veux, je te ferais quelque chose d'un peu moins nul, comme exemple, avec une interface, mais pour le moment, j'ai pas trop de temps

Chris :)

PS : Tu devrais mettre le genre de film. (Polar, SF, Western, etc...)
Re-PS : Et ce serait sympa que tu t'enregistres, aussi, si ce n'est pas déjà fait.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Oui, on t'a reconnu France avec ton logiciel de base de donnés pour tes films.

une question, ce n'est pas plutot compter le nombre de fichiers de preferences (donc présentant un film) contenu dans un dossier que tu cherches ?

je reconnais le bout de code qui est de moi et à mon avis c'est cela.

donc le truc c'est :

Code : Tout sélectionner

Procedure Comptage(Dossier.s)
  If ExamineDirectory(n, Dossier, "*.txt") ; on examine le dossier
    Repeat
      Filetype = NextDirectoryEntry() ; cherche le prochain fichier contenu dans le dossier
      If FileType = 1 ; on a trouvé un fichier dans le dossier
        Nb + 1
      EndIf
    Until FileType = 0 ; si filetype = 0 c'est qu'il n'y a plus de fichier non trouvé dans le dossier
  EndIf
  ProcedureReturn Nb
EndProcedure

Debug Comptage("C:\purebasic\catalogue\") ; donne le nombre de fichier dans le Dossier
donc tu mets ton dossier et hop
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
france
Messages : 7
Inscription : mer. 10/mars/2004 0:14

Message par france »

et oui c moi, mais je ne mettais pas enregistrer systematiquement

maintenant c fait

merci a vous 2
effectivement le soldat, c tout a fait ce que je veux faire, mais ca fonctionne pas le bout de code que tu m'as donné
lorsque je lui demande le nbre de films que j'ai repertorié, il s'arrete :lol:
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

ben, ça marche cher moi ?
tu as bien mis le bon dossier en paramètre ?

Si tu veux, tu me donne ton code complet, je regarde et je l'insère. tu veux que ça l'affiche au démarrage, c'est bien cela ?
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
france
Messages : 7
Inscription : mer. 10/mars/2004 0:14

Message par france »

oui c ca
je voulais qu'a l'ouverture du menu il m'indique le nbre de films que j'ai

je te renvoies donc le prog qui deviendra bientot le tien, :lol: , mais grace à toi, j'apprends énormément, et je t'en remercies
a+

Code : Tout sélectionner

; déclaration des constantes 

Enumeration 
  
  #menu 
  #Text_0 
  #Text_1 
  #Text_2 
  #Text_3 
  #Text_4 
  #Text_5 
  #Text_6 
  #Text_7 
  #Text_8 
  #text_9 
  #text_10 
  #text_11 
  #text_12 
  #text_13 
  #text_14 
  #text_15 
  #text_16 
  #text_17 
  #text_18 
  #text_19 
  #text_20 
  #text_21 
  #text_22 
  #text_23 
  #text_24 
  #text_25 
  #String_0 
  #String_1 
  #String_2 
  #String_3 
  #String_4 
  #String_5 
  #String_6 
  #String_7 
  #String_8 
  #Button_0 
  #Button_1 
  #button_2 
  #button_consultation_film 
  #consultation 
  #film_du_catalogue 
  #pret_de_film
  #message 
  #bouton_inserer 
  #page_film 
  #sauvegarder 
  #corriger 
  #gadget_editeur 
  #bouton_consulter 
  #page_consultation 
  #pret
  #text_26
  #text_27
  #text_28
  #text_29
  #text_30
  #string_9
  #string_10
  #string_11
  #string_12
  #string_13
  #string_14
  #fini
  #retour3
  #effacer
  #nbre
  
  
  
  
  
  
  
  
  
  
EndEnumeration 

Global titre.s, acteur1.s, realisateur.s, acteur2.s, acteur3.s, duree.s, origine.s, annee.s, producteur.s,film.s,prete.s,retour.s,personne.s ,nb

Declare creation_de_film(Modification.l) 
Declare recapitulatif() 
Declare creation_fichier() 
Declare consultation_de_film() 
Declare pret_de_film()

Procedure ouverture_menu() 
  
  If OpenWindow(#menu, 0, 0, 200, 200, #pb_window_systemmenu | #pb_window_windowcentered, "menu") 
    If CreateGadgetList (WindowID()) 
      ButtonGadget(#bouton_inserer, 10, 10, 180, 20, "INSERER UN FILM") 
      ButtonGadget(#bouton_consulter, 10, 40, 180, 20, "CONSULTER LE CATALOGUE") 
      ButtonGadget(#pret,10,70,180,20,"PRET DE FILM") 
    
      
    EndIf 
  EndIf 
  
  Repeat 
    EventID = WaitWindowEvent() 
    
  Until EventID = #PB_EventCloseWindow Or EventID = #PB_EventGadget 
  
  CloseWindow(#menu) 
  
  If EventID = #PB_EventGadget 
    Select EventGadgetID() 
        
      Case #bouton_inserer 
        ; On initialise les variables, important ! 
        Titre = ReadPreferenceString("Titre", "") 
        realisateur = "" 
        acteur1 = "" 
        acteur2 = "" 
        acteur3 = "" 
        duree = "" 
        origine = "" 
        annee = "" 
        producteur = "" 
        
        creation_de_film(0) 
        
      Case #bouton_consulter 
        consultation_de_film() 
        
      Case #pret
      
      film = ReadPreferenceString("film","")
      personne = ""
      prete = ""
      retour = ""
        pret_de_film ()
     


        
        
    EndSelect 
  EndIf 
  
  
  
EndProcedure 

Procedure creation_de_film(Modification.l) 
  ; Modification = 1 si on modifie la page 
  
  If OpenWindow(#page_film, 216, 0, 343, 333, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered, "information pour le film") 
    If CreateGadgetList(WindowID()) 
      TextGadget(#Text_0, 10, 10, 90, 20, "Titre du film :") 
      TextGadget(#Text_1, 10, 40, 90, 20, "Réalisateur :") 
      TextGadget(#Text_2, 10, 70, 90, 20, "Premier acteur :") 
      TextGadget(#Text_3, 10, 100, 90, 20, "Deuxième acteur :") 
      TextGadget(#Text_4, 10, 130, 90, 20, "Troisième acteur :") 
      TextGadget(#Text_5, 10, 160, 90, 20, "Durée :") 
      TextGadget(#Text_6, 10, 190, 90, 20, "Origine :") 
      TextGadget(#Text_7, 10, 220, 90, 20, "Année :") 
      TextGadget(#Text_8, 10, 250, 90, 20, "Producteur :") 
      StringGadget(#String_0, 100, 10, 210, 20, Titre) 
      StringGadget(#String_1, 100, 40, 210, 20, realisateur) 
      StringGadget(#String_2, 100, 70, 210, 20, acteur1) 
      StringGadget(#String_3, 100, 100, 210, 20, acteur2) 
      StringGadget(#String_4, 100, 130, 210, 20, acteur3) 
      StringGadget(#String_5, 100, 160, 210, 20, duree) 
      StringGadget(#String_6, 100, 190, 210, 20, origine) 
      StringGadget(#String_7, 100, 220, 210, 20, annee) 
      StringGadget(#String_8, 100, 250, 210, 20, producteur) 
      ButtonGadget(#Button_0, 30, 290, 120, 30, "Terminer") 
      ButtonGadget(#Button_1, 190, 290, 120, 30, "Annuler") 
      
    EndIf 
    
    Recapitulatif = 0 
    
    Repeat 
      
      EventID = WaitWindowEvent() 
      
     If EventID = #PB_EventGadget 
        Select EventGadgetID() ; La gestion des évenements 
            
          Case #Button_0 
            ; L'utilistateur à terminer la saisie des informations 
            titre = GetGadgetText(#String_0) 
            realisateur = GetGadgetText(#String_1) 
            acteur1 = GetGadgetText(#String_2) 
            acteur2 = GetGadgetText(#String_3) 
            acteur3 = GetGadgetText(#String_4) 
            duree = GetGadgetText(#String_5) 
            origine = GetGadgetText(#String_6) 
            annee = GetGadgetText(#String_7) 
            producteur = GetGadgetText(#String_8) 
            ; On a mémorisé toute les informations utiles 
            ; on ferme la fenetre et on quitte 
            CloseWindow(#page_film) 
            Recapitulatif = 1 
            
          Case #Button_1 
            ; L'utilisateur à changer d'idée, on ferme la fenètre 
            If Modification ; Si on ne fait que modifier le film, on retourne au récapitulatif 
              Recapitulatif = 1 
            EndIf 
            EventID = #PB_EventCloseWindow 
            
        EndSelect 
      EndIf 
    Until EventID = #PB_EventCloseWindow Or Recapitulatif 
    
    ; On ferme la Fenètre pour la saisie des informations d'un film 
    CloseWindow(#page_film) 
    
    If Recapitulatif 
      Recapitulatif() 
    Else 
      ouverture_menu() 
    EndIf 
    
  EndIf 
EndProcedure 

Procedure recapitulatif() 
  
  
  If OpenWindow(#page_film, 216, 0, 430, 400, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered, "Récapitulatif des informations pour le nouveau film") 
    
    If CreateGadgetList(WindowID()) 
      
      ButtonGadget(#sauvegarder, 10, 340, 200, 20, "sauvegarder") 
      ButtonGadget(#corriger, 220, 340, 200, 20, "corriger") 
      ButtonGadget(#button_2, 10, 370, 200, 20, "retour au menu") 
      ButtonGadget(#pret,220,370,200,20,"pret du film")
      If LoadFont(0, "arial", 25, #PB_Font_Underline) 
        
        
        TextGadget(#text_9, 10, 10, 430, 40, titre, #pb_text_center) 
        SetGadgetFont(#text_9, FontID()) 
        

        TextGadget(#text_10, 10, 100, 100, 20, "Réalisé par :") 
        TextGadget(#text_11, 200, 100, 150, 20, realisateur) 
        TextGadget(#text_12, 10, 130, 100, 20, "avec entre autre : ") 
        TextGadget(#text_13, 200, 130, 100, 15, acteur1) 
        TextGadget(#text_14, 200, 150, 100, 15, acteur2) 
        TextGadget(#text_15, 200, 170, 100, 15, acteur3) 
        TextGadget(#text_16, 10, 200, 150, 20, "La duree du film est de :") 
        TextGadget(#text_17, 200, 200, 100, 20, duree) 
        TextGadget(#text_18, 10, 230, 100, 20, "l'origine est : ") 
        TextGadget(#text_19, 200, 230, 100, 20, origine) 
        TextGadget(#text_20, 10, 260, 190, 20, " création de " + titre + " est :") 
        TextGadget(#text_21, 200, 260, 100, 20, annee) 
        TextGadget(#text_22, 10, 290, 100, 20, "produit par : ") 
        TextGadget(#text_23, 200, 290, 100, 20, producteur) 
      EndIf 
      
      Repeat 
        EventID = WaitWindowEvent() 
        
      Until EventID = #PB_EventCloseWindow Or EventID = #PB_EventGadget 
      
      CloseWindow(#page_film) 
      
      If EventID = #PB_EventGadget 
        Select EventGadgetID() 
            
          Case #corriger 
            creation_de_film(1) 
            
          Case #sauvegarder 
            creation_fichier() 
            
          Case #button_2 
            ouverture_menu() 
            
          Case #pret  
            pret_de_film()
            
          Case #nbre
          

        EndSelect 
      EndIf 
      
    EndIf 
  EndIf 
  
EndProcedure 


Procedure creation_fichier() 
  
  ; Demande le nom du fichier à l'utilisateur avec le titre du film en nom par défaut 
  Fichier.s = SaveFileRequester("Sauver le fichier", "c:\dvd\" + Titre + ".txt", "Fichiers texte|*.txt", 0) 
  
  If Fichier = "" ; Si la function retourne un texte vide, vous avez appuyé sur annulé 
    
    
  Else ; si la fonction SaveFileRequester retourne une valeur 
    
    If GetExtensionPart(Fichier) = "" ; si le nom de fichier ne comporte pas d'extension 
      Fichier = Fichier + ".txt" ; on ajoute l'extension 
    EndIf 
    
    If CreatePreferences(Fichier) ; On crée un fichier de préférences, c'est plus simple qu'un fichier normal au niveau de la gestion 
      
      WritePreferenceString("Titre", Titre) 
      WritePreferenceString("Réalisateur", realisateur) 
      WritePreferenceString("Acteur 1", acteur1) 
      WritePreferenceString("Acteur 2", acteur2) 
      WritePreferenceString("Acteur 3", acteur3) 
      WritePreferenceString("Durée", duree) 
      WritePreferenceString("Origine", origine) 
      WritePreferenceString("Année", annee) 
      WritePreferenceString("Producteur", producteur) 
      WritePreferenceString("nom de l'emprunteur",personne)
      WritePreferenceString ("date de pret",prete)
      WritePreferenceString("date de retour",retour)
      ClosePreferences() 
      
      MessageRequester("Validation", "Le film " + titre + " est bien enregistré") 
      
    Else 
      MessageRequester("probleme", "impossible de creer le fichier", 0) 
    EndIf 
    
  EndIf 
  
  Recapitulatif() 
  
EndProcedure 

Procedure consultation_de_film() 
  ; on demande le fichier a ouvrir 
  Fichier.s = OpenFileRequester("Ouvrir", "c:\dvd\", "Films|*.txt", 0) 
  
  If Fichier = "" ; on a annulé la demande d'ouverture de fichier 
    Ouverture_Menu() ; on retourne au menu 
  Else 
    If  OpenPreferences(Fichier) 
      
      Titre = ReadPreferenceString("Titre", "") 
      realisateur = ReadPreferenceString("Réalisateur", "") 
      acteur1 = ReadPreferenceString("Acteur 1", "") 
      acteur2 = ReadPreferenceString("Acteur 2", "") 
      acteur3 = ReadPreferenceString("Acteur 3", "") 
      duree = ReadPreferenceString("Durée", "") 
      origine = ReadPreferenceString("Origine", "") 
      annee = ReadPreferenceString("Année", "") 
      producteur = ReadPreferenceString("Producteur", "") 
     personne = ReadPreferenceString("nom de l'emprunteur","")
      prete=ReadPreferenceString("date de pret","")
      retour=ReadPreferenceString("date de retour","")
      ClosePreferences() 
      
    
      
      
            ; on affiche le film 
      Recapitulatif() 
      
    EndIf 
  EndIf 
EndProcedure 

Procedure pret_de_film()



   If OpenWindow(#pret_de_film, 216, 0,430, 150, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered, "PRET DU FILM "+TITRE)
   
    If CreateGadgetList(WindowID())   
 
   
   TextGadget(#text_26 ,10,10,150,20,"nom de l'emprunteur :")
    StringGadget(#string_9,170,10,210,20, personne)
   TextGadget(#text_27,10,50,90,20,"date de pret :")
    StringGadget(#string_10,100,50,100,20, prete)
   TextGadget(#text_28,210,50,90,20,"date de retour :") 
    StringGadget(#string_11,310,50,90,20, retour)
    ButtonGadget(#fini,270,100,90,20,"sauvegarder")
    ButtonGadget(#retour3,10,100,90,20,"retour")
   
  EndIf
  
   
    
    Repeat 
      
      EventID = WaitWindowEvent() 
      
     If EventID = #PB_EventGadget 
        Select EventGadgetID() ; La gestion des évenements 
            
          Case #fini 
            ; L'utilistateur à terminer la saisie des informations 
            personne = GetGadgetText(#String_9) 
            prete= GetGadgetText(#String_10) 
            retour = GetGadgetText(#String_11) 
            
            ; On a mémorisé toute les informations utiles 
            ; on ferme la fenetre et on quitte 
            CloseWindow(#pret_de_film) 
            creation_fichier()  
            
          Case #retour3  
          CloseWindow(#pret_de_film)
          
          ouverture_menu()
          
          
  
          
 EndSelect
 EndIf
           

 Until EventID = #PB_EventCloseWindow
  
  

EndIf


EndProcedure




ouverture_menu()
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

c'était tout simple, je te laisse te rendre compte par toi même (voir procedure Ouverture_menu)

Code : Tout sélectionner

; déclaration des constantes

Enumeration
  
  #menu
  #Text_0
  #Text_1
  #Text_2
  #Text_3
  #Text_4
  #Text_5
  #Text_6
  #Text_7
  #Text_8
  #text_9
  #text_10
  #text_11
  #text_12
  #text_13
  #text_14
  #text_15
  #text_16
  #text_17
  #text_18
  #text_19
  #text_20
  #text_21
  #text_22
  #text_23
  #text_24
  #text_25
  #String_0
  #String_1
  #String_2
  #String_3
  #String_4
  #String_5
  #String_6
  #String_7
  #String_8
  #Button_0
  #Button_1
  #button_2
  #button_consultation_film
  #consultation
  #film_du_catalogue
  #pret_de_film
  #message
  #bouton_inserer
  #page_film
  #sauvegarder
  #corriger
  #gadget_editeur
  #bouton_consulter
  #page_consultation
  #pret
  #text_26
  #text_27
  #text_28
  #text_29
  #text_30
  #string_9
  #string_10
  #string_11
  #string_12
  #string_13
  #string_14
  #fini
  #retour3
  #effacer
  #nbre
  
  #NbFilm ; Nombre de film contenu dans le dossier
  
  
  
  
  
  
  
  
  
EndEnumeration

Global titre.s, acteur1.s, realisateur.s, acteur2.s, acteur3.s, duree.s, origine.s, annee.s, producteur.s, film.s, prete.s, retour.s, personne.s, nb

Declare creation_de_film(Modification.l)
Declare recapitulatif()
Declare creation_fichier()
Declare consultation_de_film()
Declare pret_de_film()

Procedure Comptage(Dossier.s) 
  If ExamineDirectory(n, Dossier, "*.txt") ; on examine le dossier 
    Repeat 
      Filetype = NextDirectoryEntry() ; cherche le prochain fichier contenu dans le dossier 
      If FileType = 1 ; on a trouvé un fichier dans le dossier 
        Nb + 1 
      EndIf 
    Until FileType = 0 ; si filetype = 0 c'est qu'il n'y a plus de fichier non trouvé dans le dossier 
  EndIf 
  ProcedureReturn Nb 
EndProcedure

Procedure ouverture_menu()
  
  If OpenWindow(#menu, 0, 0, 200, 200, #pb_window_systemmenu | #pb_window_windowcentered, "menu")
    If CreateGadgetList (WindowID())
      ButtonGadget(#bouton_inserer, 10, 10, 180, 20, "INSERER UN FILM")
      ButtonGadget(#bouton_consulter, 10, 40, 180, 20, "CONSULTER LE CATALOGUE")
      ButtonGadget(#pret, 10, 70, 180, 20, "PRET DE FILM")
      
      ; Pour afficher le nombre de film
      TextGadget(#NbFilm, 10, 180, 180, 20, "Nombre de films catalogués : " + Str(Comptage("C:\Dvd")))
      
    EndIf
  EndIf
  
  Repeat
    EventID = WaitWindowEvent()
    
  Until EventID = #PB_EventCloseWindow Or EventID = #PB_EventGadget
  
  CloseWindow(#menu)
  
  If EventID = #PB_EventGadget
    Select EventGadgetID()
        
      Case #bouton_inserer
        ; On initialise les variables, important !
        Titre = ReadPreferenceString("Titre", "")
        realisateur = ""
        acteur1 = ""
        acteur2 = ""
        acteur3 = ""
        duree = ""
        origine = ""
        annee = ""
        producteur = ""
        
        creation_de_film(0)
        
      Case #bouton_consulter
        consultation_de_film()
        
      Case #pret
        
        film = ReadPreferenceString("film", "")
        personne = ""
        prete = ""
        retour = ""
        pret_de_film ()
        
        
        
        
        
    EndSelect
  EndIf
  
  
  
EndProcedure

Procedure creation_de_film(Modification.l)
  ; Modification = 1 si on modifie la page
  
  If OpenWindow(#page_film, 216, 0, 343, 333, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered, "information pour le film")
    If CreateGadgetList(WindowID())
      TextGadget(#Text_0, 10, 10, 90, 20, "Titre du film :")
      TextGadget(#Text_1, 10, 40, 90, 20, "Réalisateur :")
      TextGadget(#Text_2, 10, 70, 90, 20, "Premier acteur :")
      TextGadget(#Text_3, 10, 100, 90, 20, "Deuxième acteur :")
      TextGadget(#Text_4, 10, 130, 90, 20, "Troisième acteur :")
      TextGadget(#Text_5, 10, 160, 90, 20, "Durée :")
      TextGadget(#Text_6, 10, 190, 90, 20, "Origine :")
      TextGadget(#Text_7, 10, 220, 90, 20, "Année :")
      TextGadget(#Text_8, 10, 250, 90, 20, "Producteur :")
      StringGadget(#String_0, 100, 10, 210, 20, Titre)
      StringGadget(#String_1, 100, 40, 210, 20, realisateur)
      StringGadget(#String_2, 100, 70, 210, 20, acteur1)
      StringGadget(#String_3, 100, 100, 210, 20, acteur2)
      StringGadget(#String_4, 100, 130, 210, 20, acteur3)
      StringGadget(#String_5, 100, 160, 210, 20, duree)
      StringGadget(#String_6, 100, 190, 210, 20, origine)
      StringGadget(#String_7, 100, 220, 210, 20, annee)
      StringGadget(#String_8, 100, 250, 210, 20, producteur)
      ButtonGadget(#Button_0, 30, 290, 120, 30, "Terminer")
      ButtonGadget(#Button_1, 190, 290, 120, 30, "Annuler")
      
    EndIf
    
    Recapitulatif = 0
    
    Repeat
      
      EventID = WaitWindowEvent()
      
      If EventID = #PB_EventGadget
        Select EventGadgetID() ; La gestion des évenements
            
          Case #Button_0
            ; L'utilistateur à terminer la saisie des informations
            titre = GetGadgetText(#String_0)
            realisateur = GetGadgetText(#String_1)
            acteur1 = GetGadgetText(#String_2)
            acteur2 = GetGadgetText(#String_3)
            acteur3 = GetGadgetText(#String_4)
            duree = GetGadgetText(#String_5)
            origine = GetGadgetText(#String_6)
            annee = GetGadgetText(#String_7)
            producteur = GetGadgetText(#String_8)
            ; On a mémorisé toute les informations utiles
            ; on ferme la fenetre et on quitte
            CloseWindow(#page_film)
            Recapitulatif = 1
            
          Case #Button_1
            ; L'utilisateur à changer d'idée, on ferme la fenètre
            If Modification ; Si on ne fait que modifier le film, on retourne au récapitulatif
              Recapitulatif = 1
            EndIf
            EventID = #PB_EventCloseWindow
            
        EndSelect
      EndIf
    Until EventID = #PB_EventCloseWindow Or Recapitulatif
    
    ; On ferme la Fenètre pour la saisie des informations d'un film
    CloseWindow(#page_film)
    
    If Recapitulatif
      Recapitulatif()
    Else
      ouverture_menu()
    EndIf
    
  EndIf
EndProcedure

Procedure recapitulatif()
  
  
  If OpenWindow(#page_film, 216, 0, 430, 400, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered, "Récapitulatif des informations pour le nouveau film")
    
    If CreateGadgetList(WindowID())
      
      ButtonGadget(#sauvegarder, 10, 340, 200, 20, "sauvegarder")
      ButtonGadget(#corriger, 220, 340, 200, 20, "corriger")
      ButtonGadget(#button_2, 10, 370, 200, 20, "retour au menu")
      ButtonGadget(#pret, 220, 370, 200, 20, "pret du film")
      If LoadFont(0, "arial", 25, #PB_Font_Underline)
        
        
        TextGadget(#text_9, 10, 10, 430, 40, titre, #pb_text_center)
        SetGadgetFont(#text_9, FontID())
        
        
        TextGadget(#text_10, 10, 100, 100, 20, "Réalisé par :")
        TextGadget(#text_11, 200, 100, 150, 20, realisateur)
        TextGadget(#text_12, 10, 130, 100, 20, "avec entre autre : ")
        TextGadget(#text_13, 200, 130, 100, 15, acteur1)
        TextGadget(#text_14, 200, 150, 100, 15, acteur2)
        TextGadget(#text_15, 200, 170, 100, 15, acteur3)
        TextGadget(#text_16, 10, 200, 150, 20, "La duree du film est de :")
        TextGadget(#text_17, 200, 200, 100, 20, duree)
        TextGadget(#text_18, 10, 230, 100, 20, "l'origine est : ")
        TextGadget(#text_19, 200, 230, 100, 20, origine)
        TextGadget(#text_20, 10, 260, 190, 20, " création de " + titre + " est :")
        TextGadget(#text_21, 200, 260, 100, 20, annee)
        TextGadget(#text_22, 10, 290, 100, 20, "produit par : ")
        TextGadget(#text_23, 200, 290, 100, 20, producteur)
      EndIf
      
      Repeat
        EventID = WaitWindowEvent()
        
      Until EventID = #PB_EventCloseWindow Or EventID = #PB_EventGadget
      
      CloseWindow(#page_film)
      
      If EventID = #PB_EventGadget
        Select EventGadgetID()
            
          Case #corriger
            creation_de_film(1)
            
          Case #sauvegarder
            creation_fichier()
            
          Case #button_2
            ouverture_menu()
            
          Case #pret
            pret_de_film()
            
          Case #nbre
            
            
        EndSelect
      EndIf
      
    EndIf
  EndIf
  
EndProcedure


Procedure creation_fichier()
  
  ; Demande le nom du fichier à l'utilisateur avec le titre du film en nom par défaut
  Fichier.s = SaveFileRequester("Sauver le fichier", "c:\dvd\" + Titre + ".txt", "Fichiers texte|*.txt", 0)
  
  If Fichier = "" ; Si la function retourne un texte vide, vous avez appuyé sur annulé
    
    
  Else ; si la fonction SaveFileRequester retourne une valeur
    
    If GetExtensionPart(Fichier) = "" ; si le nom de fichier ne comporte pas d'extension
      Fichier = Fichier + ".txt" ; on ajoute l'extension
    EndIf
    
    If CreatePreferences(Fichier) ; On crée un fichier de préférences, c'est plus simple qu'un fichier normal au niveau de la gestion
      
      WritePreferenceString("Titre", Titre)
      WritePreferenceString("Réalisateur", realisateur)
      WritePreferenceString("Acteur 1", acteur1)
      WritePreferenceString("Acteur 2", acteur2)
      WritePreferenceString("Acteur 3", acteur3)
      WritePreferenceString("Durée", duree)
      WritePreferenceString("Origine", origine)
      WritePreferenceString("Année", annee)
      WritePreferenceString("Producteur", producteur)
      WritePreferenceString("nom de l'emprunteur", personne)
      WritePreferenceString ("date de pret", prete)
      WritePreferenceString("date de retour", retour)
      ClosePreferences()
      
      MessageRequester("Validation", "Le film " + titre + " est bien enregistré")
      
    Else
      MessageRequester("probleme", "impossible de creer le fichier", 0)
    EndIf
    
  EndIf
  
  Recapitulatif()
  
EndProcedure

Procedure consultation_de_film()
  ; on demande le fichier a ouvrir
  Fichier.s = OpenFileRequester("Ouvrir", "c:\dvd\", "Films|*.txt", 0)
  
  If Fichier = "" ; on a annulé la demande d'ouverture de fichier
    Ouverture_Menu() ; on retourne au menu
  Else
    If OpenPreferences(Fichier)
      
      Titre = ReadPreferenceString("Titre", "")
      realisateur = ReadPreferenceString("Réalisateur", "")
      acteur1 = ReadPreferenceString("Acteur 1", "")
      acteur2 = ReadPreferenceString("Acteur 2", "")
      acteur3 = ReadPreferenceString("Acteur 3", "")
      duree = ReadPreferenceString("Durée", "")
      origine = ReadPreferenceString("Origine", "")
      annee = ReadPreferenceString("Année", "")
      producteur = ReadPreferenceString("Producteur", "")
      personne = ReadPreferenceString("nom de l'emprunteur", "")
      prete = ReadPreferenceString("date de pret", "")
      retour = ReadPreferenceString("date de retour", "")
      ClosePreferences()
      
      
      
      
      ; on affiche le film
      Recapitulatif()
      
    EndIf
  EndIf
EndProcedure

Procedure pret_de_film()
  
  
  
  If OpenWindow(#pret_de_film, 216, 0, 430, 150, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered, "PRET DU FILM " + TITRE)
    
    If CreateGadgetList(WindowID())
      
      
      TextGadget(#text_26, 10, 10, 150, 20, "nom de l'emprunteur :")
      StringGadget(#string_9, 170, 10, 210, 20, personne)
      TextGadget(#text_27, 10, 50, 90, 20, "date de pret :")
      StringGadget(#string_10, 100, 50, 100, 20, prete)
      TextGadget(#text_28, 210, 50, 90, 20, "date de retour :")
      StringGadget(#string_11, 310, 50, 90, 20, retour)
      ButtonGadget(#fini, 270, 100, 90, 20, "sauvegarder")
      ButtonGadget(#retour3, 10, 100, 90, 20, "retour")
      
    EndIf
    
    
    
    Repeat
      
      EventID = WaitWindowEvent()
      
      If EventID = #PB_EventGadget
        Select EventGadgetID() ; La gestion des évenements
            
          Case #fini
            ; L'utilistateur à terminer la saisie des informations
            personne = GetGadgetText(#String_9)
            prete = GetGadgetText(#String_10)
            retour = GetGadgetText(#String_11)
            
            ; On a mémorisé toute les informations utiles
            ; on ferme la fenetre et on quitte
            CloseWindow(#pret_de_film)
            creation_fichier()
            
          Case #retour3
            CloseWindow(#pret_de_film)
            
            ouverture_menu()
            
            
            
            
        EndSelect
      EndIf
      
      
    Until EventID = #PB_EventCloseWindow
    
    
    
  EndIf
  
  
EndProcedure




ouverture_menu()
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
france
Messages : 7
Inscription : mer. 10/mars/2004 0:14

Message par france »

oui effectivement
j'avais mal positionné la procedure comptage()

par contre, je me suis permis de mettre juste en dessous de

Code : Tout sélectionner

If ExamineDirectory(n, Dossier, "*.txt"); on examine le dossier
  nb=0  
car sinon il m'additionner a chaque fois le nombre de films
9,18,27, etc...

en tout cas merci beaucoup
Répondre