Page 2 sur 2
Re: Comment trouver un argument dans une liste
Publié : ven. 13/oct./2017 13:48
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
Re: Comment trouver un argument dans une liste
Publié : ven. 13/oct./2017 14:00
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
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

Re: Comment trouver un argument dans une liste
Publié : ven. 13/oct./2017 14:15
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()

Re: Comment trouver un argument dans une liste
Publié : ven. 13/oct./2017 14:35
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
Re: Comment trouver un argument dans une liste
Publié : ven. 13/oct./2017 16:15
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 ?

Re: Comment trouver un argument dans une liste
Publié : ven. 13/oct./2017 20:39
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.
Re: Comment trouver un argument dans une liste
Publié : ven. 13/oct./2017 21:52
par Zorro
ben non
deja tu utilises une variable Global
alors que ta procedure est faites pour renvoyer un String
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
dans ma procedure .... (c'est le melange de ta variable globale avec la mienne dans la procedure qui met le cirque

)
et changer ton
en
