Comment trouver un argument dans une liste

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Comment trouver un argument dans une liste

Message par Ar-S »

- J'ai récupe le .doc, l'ai copié dans NP++
- J'ai viré les ,F, ,M, etc...
- En PB j'ai viré les prénoms sans dates pour me créer une liste saine en txt prenom,jour,mois

Code : Tout sélectionner

     P$ = ReadString(0) : If Not FindString(p$,",,") :  AddElement (Prenom()) : Prenom() = p$ : EndIf
je vais maintenant la traiter ^^
Je pense la laisser éditable en txt histoire de pouvoir ajouter des prénoms/dates/events
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Comment trouver un argument dans une liste

Message par Zorro »

Ar-S a écrit :-
- En PB j'ai viré les prénoms sans dates pour me créer une liste saine en txt prenom,jour,mois

Code : Tout sélectionner

     P$ = ReadString(0) : If Not FindString(p$,",,") :  AddElement (Prenom()) : Prenom() = p$ : EndIf
ce qui corresponds a ma ligne de code

Code : Tout sélectionner

 If stringfield(ligne.s,3,",")<>""
;)
je vais maintenant la traiter ^^
Je pense la laisser éditable en txt histoire de pouvoir ajouter des prénoms/dates/events
oui c'est mieux :)
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Comment trouver un argument dans une liste

Message par Marc56 »

On peut aussi prendre le code source (CTRL+U) de la page http://www.retrouversonnord.be/datessaints.htm
Prendre le bloc de texte
Le coller dans un editeur ascii
faire recherche/remplacer
(^.+[^\d]$\r\n) par rien
(= supprimer les lignes qui ne se terminent pas par un chiffre)

Ou même faire tout le début en une fois avec ReceiveHTTPFile()
:)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Comment trouver un argument dans une liste

Message par Ar-S »

Ma version basée sur la liste

Code : Tout sélectionner

; Ephéméride by Ar-S // 13-10-2017
; PB 5.61 x64
; Basé sur liste.txt


Enumeration
  #win
  #TXT
  #BT_CHERCHE
  #PRENOM
EndEnumeration

Declare.s ParseMois(MOUNTH.s)
Declare Fermer()

Global NewList Prenom.s()
Global Mois.s


;/// LECTURE DE LA LISTE

If ReadFile(0,"fetes.txt")
  While Eof(0) = 0           ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File') 
    P$ = ReadString(0)       ; Affiche du fichier
    AddElement (Prenom())
    Prenom() = LCase(p$)
  Wend
  CloseFile(0)
  
Else
  MessageRequester("Erreur","Base de données des fêtes introuvable, ce programme va se terminer",#MB_ICONERROR)
  End
EndIf



;// FENETRE

If OpenWindow(#win, #PB_Ignore, #PB_Ignore, 250, 100, "Jour des fêtes - LDVMULTIMEDIA", #PB_Window_SystemMenu)
  TextGadget(#TXT,0,0,250,20,"Entrer le prénom désiré",#PB_Text_Center|#PB_Text_Border)
  StringGadget(#PRENOM,10,30,230,25,"",#PB_String_LowerCase)
  ButtonGadget  (#BT_CHERCHE, 10, 60, 230, 30, "CHERCHER")
  
  BindEvent(#PB_Event_CloseWindow,@Fermer())
  
  Repeat
    Event = WindowEvent()
    Select Event
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #BT_CHERCHE
            Prenom$ = GetGadgetText(#PRENOM)
            If Prenom$<>""
              
              ForEach Prenom()
                
                Prenom.s  = Mid(Prenom(),0,FindString(prenom(),",",0)-1)
                If Prenom.s = Prenom$
                  
                  Date.s    = Mid(Prenom(),Len(Prenom.s)+2) 
                  Jour.s = StringField(Date.s,1, ",")
                  Mois.s = StringField(Date.s,2, ",")
                  ParseMois(Mois.s)
                  
                  MessageRequester("Et hop", "St(e) "+Prenom.s+ " : " + jour.s + " " + Mois.s,#MB_ICONINFORMATION)
                  erreur = 0
                  Break 
                Else
                erreur+1
                EndIf
                
              Next
              
              If erreur > 0
                MessageRequester("Oups", GetGadgetText(#PRENOM) +" : aucun résultat :[",#MB_ICONINFORMATION)
                erreur = 0
              EndIf
              
              
              
            EndIf
        EndSelect
        
    EndSelect
    
  Until quite = 1
  End
  
EndIf

Procedure Fermer()
  quite = 1
  End
EndProcedure


Procedure.s ParseMois(MOUNTH.s)
  
  M = Val(MOUNTH.s)
  Select M
    Case 1 : Mois = "Janvier"
    Case 2 : Mois = "Février"
    Case 3 : Mois = "Mars"
    Case 4 : Mois = "Avril"
    Case 5 : Mois = "Mai"
    Case 6 : Mois = "Juin"
    Case 7 : Mois = "Juillet"
    Case 8 : Mois = "Aout"
    Case 9 : Mois = "Septembre"
    Case 10 : Mois = "Octobre"
    Case 11 : Mois = "Novembre"
    Case 12 : Mois = "Décembre" 
  EndSelect
EndProcedure
Archive zip avec liste + code : ephemeride.zip
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Comment trouver un argument dans une liste

Message par Zorro »

tu peux remplacer

Code : Tout sélectionner


 Procedure.s ParseMois(MOUNTH.s)
  Mois.s
   M = Val(MOUNTH.s)
   Select M
     Case 1 : Mois = "Janvier"
     Case 2 : Mois = "Février"
     Case 3 : Mois = "Mars"
     Case 4 : Mois = "Avril"
     Case 5 : Mois = "Mai"
     Case 6 : Mois = "Juin"
     Case 7 : Mois = "Juillet"
     Case 8 : Mois = "Aout"
     Case 9 : Mois = "Septembre"
     Case 10 : Mois = "Octobre"
     Case 11 : Mois = "Novembre"
     Case 12 : Mois = "Décembre"	 
   EndSelect
   ProcedureReturn Mois.s
 EndProcedure
 

par

Code : Tout sélectionner

Procedure.s ParseMois(MOUNTH.s)
  M = Val(MOUNTH.s) 
    Mois.s= "Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Aout,Septembre,Octobre,Novembre,Décembre"
  ProcedureReturn stringfield(Mois.s,M,",")
EndProcedure
:)


@Marc56 : mais on aime bien ré-inventer la roue , sinon a quoi sert de coder ? :) Image
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Comment trouver un argument dans une liste

Message par Ar-S »

Je n'ai fait qu'un test sur maël.. Avec ton code ça me sort tous les mois.. Avec le miens ça passe. Vu la rapidité d'interprétation, peu importe la méthode.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Comment trouver un argument dans une liste

Message par Zorro »

ben non

deja tu utilises une variable Global
alors que ta procedure est faites pour renvoyer un String

Code : Tout sélectionner

Procedure.s ParseMois(MOUNTH.s)
le ".s" en atteste


mais bien sur si tu utilises mon code :

Code : Tout sélectionner

 Procedure.s ParseMois(MOUNTH.s)
  M = Val(MOUNTH.s)
    Mois.s= "Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Aout,Septembre,Octobre,Novembre,Décembre"
  ProcedureReturn stringfield(Mois.s,M,",")
EndProcedure

il a falloir oublier le Global de ta variable "Mois.s"
ou bien ajouter

Code : Tout sélectionner

Protected Mois.s
dans ma procedure .... (c'est le melange de ta variable globale avec la mienne dans la procedure qui met le cirque :) )
et changer ton

Code : Tout sélectionner

 ParseMois(Mois.s)
en

Code : Tout sélectionner

 Mois.s=ParseMois(Mois.s)
:lol:
Répondre