JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Agenda Ven 16 Juil 2010 - 17:07 | |
| Si vous ne voulez pas louper l'anniversaire de belle-maman (ce n'est pas conseillé), sans toutefois lui rappeler son âge (ce n'est pas conseillé non plus), un petit programme d'agenda/aide-mémoire. Il est destiné à être compilé en exe et lancé automatiquement à chaque mise sous tension du PC. On lit (ou non) et on quitte. Il affiche: - les fêtes du jour et du lendemain - les anniversaires éventuels du jour et du lendemain - les événements éventuels du jour et du lendemain (aide-mémoire). Pour cela il lit successivement 3 fichiers texte: FETES.TXT, ANNIVERS.TXT, EVENEMT.TXT. Structure d'un enregistrement : FETES.TXT: Nom,jjmm par exemple Adolphe,3006 ANNIVERS.TXT: jjmmaa,Nom par exemple 130575,Julie Durand (peut être suivi de la date de décès: 230742,Paul Dupont,301209) EVENEMT.TXT: jjmmaa,texte par exemple 150810,départ en vacances Les enregistrements précédés d'un astérisque sont ignorés (commentaires). Les fichiers anniversaires et événements sont écrits dans l'ordre croissant des dates, c'est plus pratique à gérer mais pas obligatoire. Dans la foulée, il est possible d'éditer chacun de ces fichiers pour mises à jour en temps réel. Je ne peux évidemment pas vous donner Anniversaires ni Événements, mais je vous fais cadeau du fichier FETES.TXT: http://www.2shared.com/document/Jxy65sqU/FETES.htmlCliquer sur le triangle, puis sur ' click here' dans 'Save file to your PC' (ET NON PAS Download 2shared toolbar) Voici: - Code:
-
DIM w0%, h0%, lef%, hat%, hal%, had%, haf%, lbt%, hbt%, no%, tp%, i%, mo$, lc% DIM a$, a1$, bj$, bd$, sj$, sd$, c$, dj$, dd$, da$, jj%, mm%, aa%, fi$, fet$, fan$, fev$ DIM ALTI%, ALFJ%, ALFD%, ALAJ%, ALAD%, ALEJ%, ALED%, BTQ%, BTF%, BTA%, BTE% DIM LSFJ%, LSFD%, LSAJ%, LSAD%, LSEJ%, LSED% DIM lm%(12), Qpa, Qas, Qpe, Qj%, jd%, md%, ad%, Q%, Qt%, l%, j%, m%, jm$ DIM fm$(5), nf$(5), aq%, bq%, bi%, cq%, dq%, eq%, fq%, gq%, hq%, iq%, kq%, lq%, mq% DIM sjpa$, slpa$, sjas$, sjpe$, slpe$ lm%(1)=31:lm%(2)=28:lm%(3)=31:lm%(4)=30:lm%(5)=31:lm%(6)=30:lm%(7)=31 lm%(8)=31:lm%(9)=30:lm%(10)=31:lm%(11)=30:lm%(12)=31 fm$(1)=sjpa$:fm$(2)=slpa$:fm$(3)=sjas$:fm$(4)=sjpe$:fm$(5)=slpe$ nf$(1)="PAQUES":nf$(2)="L. DE PAQUES":nf$(3)="ASCENSION":nf$(4)="PENTECOTE" nf$(5)="L. DE PENTECOTE"
LABEL Fin, Lsfet, Lsani, Lseve, Tstl, Qjm, qjm1, ffq, Quantieme, Qpap, Edi DATA "janvier","février","mars","avril","mai","juin","juillet","août","septembre" DATA "octobre","novembre","décembre"
fet$ = "C:\Textes\Fetes.txt": ' ***************** à ajuster ********************* fan$ = "C:\Textes\Annivers.txt": ' ***************** à ajuster ********************* fev$ = "C:\Textes\Evenemt.txt": ' ***************** à ajuster *********************
hat% = 24: ' hauteur du titre hal% = 16: ' hauteur d'un Alpha had% = 12: ' hauteur d'un alpha haf% = 32: ' hauteur d'un List lbt% = 60: hbt% = hal%-1: ' largeur et hauteur d'un bouton h0% = 7*hal% + 6*haf% no% = 0 w0% = 350: h0% = hat%+3*hal%+3*had%+6*haf%+5 lef% = w0%-10: ' largeur d'un élément List lc% = INT(lef%/7): ' en caractères (approx.) jj% = VAL(LEFT$(DATE$, 2)): mm% = VAL(MID$(DATE$, 4, 2)): aa% = VAL(RIGHT$(DATE$,4)) IF (FRAC(aa%/4) = 0 AND FRAC(aa%/100) > 0) OR FRAC(aa%/400) = 0 THEN lm%(2) = 29 RESTORE FOR i% = 1 TO mm%: READ mo$: NEXT i% da$ = LEFT$(DATE$, 2) + " " + mo$ + " " + RIGHT$(DATE$, 4) WIDTH 0, w0%: HEIGHT 0, h0%: BORDER_HIDE 0 LEFT 0, (SCREEN_X-w0%)/2: TOP 0, (SCREEN_Y-h0%)/2 COLOR 0,220,255,255 tp% = 0: ' position top courante no%=no%+1: ALPHA no%: TOP no%,tp%+1: LEFT no%, 40: WIDTH no%,w0%: HEIGHT no%,hat% ALTI%=no%: FONT_SIZE ALTI%, 12: FONT_BOLD ALTI% CAPTION ALTI%, "Agenda du " + da$ no%=no%+1: BUTTON no%: TOP no%,tp%+1: LEFT no%,w0%-lbt%-5: WIDTH no%,lbt%: HEIGHT no%,hat%-2 BTQ%=no%: CAPTION BTQ%,"Quitter": ON_CLICK BTQ%, Fin
' Fêtes du jour no%=no%+1: tp%=tp%+hat%: ALPHA no%: TOP no%,tp%+4: LEFT no%,5: WIDTH no%,lef%: HEIGHT no%,hal% FONT_BOLD no%: CAPTION no%," FETES DU JOUR": ALFJ% = no% no%=no%+1: BUTTON no%: TOP no%,tp%+1: LEFT no%,w0%-lbt%-5: WIDTH no%,lbt%: HEIGHT no%,hbt% CAPTION no%,"Edit": ON_CLICK no%, Edi: BTF% = no% no%=no%+1: tp%=tp%+hal%: LIST no%: TOP no%,tp%: LEFT no%,5: HEIGHT no%, haf%: WIDTH no%,lef% COLOR no%, 255,255,128: FONT_SIZE no%, 10: FONT_BOLD no% LSFJ% = no% ' et du lendemain no%=no%+1: tp%=tp%+haf%: ALPHA no%: TOP no%,tp%: LEFT no%,w0%/2-50: HEIGHT no%,had% CAPTION no%," Demain": ALFD% = no% no%=no%+1: tp%=tp%+had%: LIST no%: TOP no%,tp%: LEFT no%,5: HEIGHT no%, haf%: WIDTH no%,lef% COLOR no%,255,255,128: FONT_SIZE no%, 10: FONT_BOLD no% LSFD% = no%
' Anniversaires du jour no%=no%+1: tp%=tp%+haf%: ALPHA no%: TOP no%,tp%+4: LEFT no%,5: WIDTH no%,lef%: HEIGHT no%,hal% FONT_BOLD no%: CAPTION no%," ANNIVERSAIRES DU JOUR": ALAJ% = no% no%=no%+1: BUTTON no%: TOP no%,tp%+1: LEFT no%,w0%-lbt%-5: WIDTH no%,lbt%: HEIGHT no%,hbt% CAPTION no%,"Edit": ON_CLICK no%, Edi: BTA% = no% no%=no%+1: tp%=tp%+hal%: LIST no%: TOP no%,tp%: LEFT no%,5: HEIGHT no%, haf%: WIDTH no%,lef% COLOR no%,255,255,128: FONT_SIZE no%, 10: FONT_BOLD no% LSAJ% = no% ' et du lendemain no%=no%+1: tp%=tp%+haf%: ALPHA no%: TOP no%,tp%: LEFT no%,w0%/2-50: HEIGHT no%,had% CAPTION no%," Demain":ALAD% = no% no%=no%+1: tp%=tp%+had%: LIST no%: TOP no%,tp%: LEFT no%,5: HEIGHT no%, haf%: WIDTH no%,lef% COLOR no%,255,255,128: FONT_SIZE no%, 10: FONT_BOLD no% LSAD% = no%
' Evénements du jour no%=no%+1: tp%=tp%+haf%: ALPHA no%: TOP no%,tp%+4: LEFT no%,5: WIDTH no%,lef%: HEIGHT no%,hal% FONT_BOLD no%: CAPTION no%," ÉVÉNEMENTS": ALEJ% = no% no%=no%+1: BUTTON no%: TOP no%,tp%+1: LEFT no%,w0%-lbt%-5: WIDTH no%,lbt%: HEIGHT no%,hbt% CAPTION no%,"Edit": ON_CLICK no%, Edi: BTE% = no% no%=no%+1: tp%=tp%+hal%: LIST no%: TOP no%,tp%: LEFT no%,5: HEIGHT no%, haf%: WIDTH no%,lef% LSEJ%=no%: COLOR no%,255,255,128: FONT_SIZE no%, 10: FONT_BOLD no% LSEJ% = no% ' et du lendemain no%=no%+1: tp%=tp%+haf%: ALPHA no%: TOP no%,tp%: LEFT no%,w0%/2-50: HEIGHT no%,had% CAPTION no%," Demain": ALED% = no% no%=no%+1: tp%=tp%+had%: LIST no%: TOP no%,tp%: LEFT no%,5: HEIGHT no%, haf%: WIDTH no%,lef% COLOR no%,255,255,128: FONT_SIZE no%, 10: FONT_BOLD no% LSED% = no%
2D_PEN_WIDTH 2: 2D_LINE 0, hat%-1, w0%-1, hat%-1 GOSUB Quantieme: ' -> Qj% = quantième du jour GOSUB Qpap: ' -> Qpa, Qas, Qpe = quantièmes de Pâques, Ascension et Pentecôte Q% = Qpa: GOSUB Qjm: sjpa$ = RIGHT$("0"+STR$(j%),2)+RIGHT$("0"+STR$(m%),2): ' Pâques Q% = Qpa+1: GOSUB Qjm: slpa$ = RIGHT$("0"+STR$(j%),2)+RIGHT$("0"+STR$(m%),2): ' L.Pâq. Q% = Qas: GOSUB Qjm: sjas$ = RIGHT$("0"+STR$(j%),2)+RIGHT$("0"+STR$(m%),2): ' Ascension Q% = Qpe: GOSUB Qjm: sjpe$ = RIGHT$("0"+STR$(j%),2)+RIGHT$("0"+STR$(m%),2): ' Pentec. Q% = Qpe+1: GOSUB Qjm: slpe$ = RIGHT$("0"+STR$(j%),2)+RIGHT$("0"+STR$(m%),2): ' L.Pentec. sj$ = LEFT$(DATE$, 2) + MID$(DATE$, 4, 2) + RIGHT$(DATE$, 2) jd% = jj% + 1: md% = mm%: ad% = aa% IF jd% > lm%(mm%) jd%= 1: md% = mm% + 1 IF md% > 12 THEN md% = 1: ad% = aa% + 1 END_IF sd$ = RIGHT$("0"+STR$(jd%),2)+RIGHT$("0"+STR$(md%),2)+RIGHT$(STR$(ad%),2) GOSUB Lsfet GOSUB Lsani GOSUB Lseve END Fin: TERMINATE
Lsfet: dj$ = "": dd$ = "": bj$ = LEFT$(sj$, 4): bd$ = LEFT$(sd$, 4) ' fêtes mobiles: FOR i% = 1 TO 5 IF bj$ = fm$(i%) dj$ = dj$ + nf$(i%) + ", " ELSE IF bd$ = fm$(i%) dd$ = dd$ + nf$(i%) + ", " END_IF END_IF NEXT i% ' fêtes du jour, forme Prénom,jjmm FILE_OPEN_READ 1, fet$ WHILE FILE_EOF(1) = 0 FILE_READLN 1, a$ IF INSTR(a$, bj$) > 0 i% = INSTR(a$, ","): dj$ = dj$ + LEFT$(a$, i%) + " " ELSE IF INSTR(a$, bd$) > 0 i% = INSTR(a$, ","): dd$ = dd$ + LEFT$(a$, i%) + " " END_IF END_IF END_WHILE FILE_CLOSE 1 IF LEN(dj$) > 2 a$ = LEFT$(dj$, LEN(dj$)-2): GOSUB Tstl ITEM_ADD LSFJ%, a$ IF a1$ <> "" THEN ITEM_ADD LSFJ%, a1$ END_IF IF LEN(dd$) > 2 a$ = LEFT$(dd$, LEN(dd$)-2): GOSUB Tstl ITEM_ADD LSFD%, a$ IF a1$ <> "" THEN ITEM_ADD LSFD%, a1$ END_IF RETURN
Lsani: ' forme jjmmaa,Nom[,jjmmaa du décès] bj$ = LEFT$(sj$, 4): bd$ = LEFT$(sd$, 4) FILE_OPEN_READ 1, fan$ WHILE FILE_EOF(1) = 0 FILE_READLN 1, a$ IF LEFT$(a$, 4) = bj$ ITEM_ADD LSAJ%, a$ ELSE IF LEFT$(a$, 4) = bd$ ITEM_ADD LSAD%, a$ END_IF END_IF END_WHILE FILE_CLOSE 1 RETURN
Lseve: ' forme jjmmaa,événement bj$ = sj$: bd$ = sd$ FILE_OPEN_READ 1, fev$ WHILE FILE_EOF(1) = 0 FILE_READLN 1, a$ IF LEFT$(a$, 6) = bj$ GOSUB Tstl ITEM_ADD LSEJ%, a$: IF a1$ <> "" THEN ITEM_ADD LSEJ%, a1$ ELSE IF LEFT$(a$, 6) = bd$ GOSUB Tstl ITEM_ADD LSED%, a$: IF a1$ <> "" THEN ITEM_ADD LSED%, a1$ END_IF END_IF END_WHILE FILE_CLOSE 1 RETURN
Tstl: a1$ = "" IF LEN(a$) > lc% FOR i% = lc%+1 TO 1 STEP -1 IF MID$(a$, i%, 1) = " " THEN EXIT_FOR NEXT i% a1$ = MID$(a$, i%+1, LEN(a$)-i%) a$ = LEFT$(a$, i%-1) END_IF RETURN
Edi: IF CLICKED(BTF%) = 1 THEN fi$ = fet$ IF CLICKED(BTA%) = 1 THEN fi$ = fan$ IF CLICKED(BTE%) = 1 THEN fi$ = fev$ EXECUTE_WAIT "Notepad.exe " + fi$ RETURN
Qjm: ' Q% + aa% -> jour j% et mois m%, en fonction de quantième et année bi% = 0 IF (FRAC(aa%/4) = 0 AND FRAC(aa%/100) > 0) OR FRAC(aa%/400) = 0 THEN bi% = 1 m% = 1: IF Q% < 32 THEN j% = Q%: GOTO ffq ELSE Qt% = 0 qjm1: l%= lm%(m%): IF m% = 2 THEN l% = l% + bi% Qt% = Qt% + l%: IF Qt% < Q% THEN m% = m% + 1: GOTO qjm1 j% = Q% - Qt% + l% ffq: RETURN
Quantieme: ' quantième du jour -> Qj% FOR i% = 1 TO mm%-1: Qj% = Qj% + lm%(i%): NEXT i% IF (FRAC(aa%/4) = 0 AND FRAC(aa%/100) > 0) OR FRAC(aa%/400) = 0 IF mm% > 2 THEN QJ% = Qj% + 1 END_IF Qj% = Qj% + jj% RETURN
Qpap: ' quantièmes de Pâques, Ascension et Pentecôte aq% = 19*FRAC(aa%/19) bq% = INT(aa%/100) bi% = 0 IF (FRAC(aa%/4) = 0 AND FRAC(aa%/100) > 0) OR FRAC(aa%/400) = 0 THEN bi% = 1 cq% = 100*FRAC(aa%/100) dq% = INT(bq%/4) eq% = 4*FRAC(bq%/4) fq% = INT((bq% + 8)/25) gq% = INT((bq% - fq% + 1)/3) hq% = 30*FRAC((19 * aq% + bq% - dq% - gq% + 15)/30) iq% = INT(cq%/4) kq% = 4*FRAC(cq%/4) lq% = 7*FRAC((32 + 2 * eq% + 2 * iq% - hq% - kq%)/7) mq% = INT((aq% + 11 * hq% + 22 * lq%) / 451) Qpa = hq% + lq% - 7 * mq% + 81 + bi% Qas = Qpa + 39: Qpe = Qpa + 49 RETURN
Dernière édition par JL35 le Ven 16 Juil 2010 - 21:22, édité 4 fois | |
|