Gambas France BETA


Pas de compte ? Incription

Planificateur de tâches annuelle...

Ce sujet est résolu.

1
AuteurMessages
spheris#1 Posté le 4/6/2012 à 11:48:13
Bonjour,
je pose ma question essentiellement sur l'étude de "comment le faire" avant de coder.

Je souhaite créer une petite application ou l'utilisateur saisi des dates anniversaires et 10 jours avant chaque date un rappel est émi sous forme de fenêtre clignotante.
Je suppose qu'il me faut un timer qui analyse en permanence toute la bdd et compare les dates avec la date actuelle. Est-ce exact ?
Mon logiciel sera démarré tous les jours ou lancé par un daemon, à voir...
Merci pour votre réponse.
;)
Prokopy#2 Posté le 4/6/2012 à 16:44:02
Kinder PinguiL'idée d'un démon me semble bonne. Il suffit juste de faire attention à ce qu'il ne prenne pas du tout de puissance entre deux vérifications.

Par exemple :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
PUBLIC SUB Main()

Application.Daemon = TRUE

DO

VerifierCalendrier()

SLEEP 60

LOOP

END

PUBLIC SUB VerifierCalendrier()

IF il_Y_A_Des_Alertes THEN

FAlert.ShowModal()

ENDIF

END
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
spheris#3 Posté le 4/6/2012 à 17:40:52
Prokopy,

Ton intervention sort encore (et toujours) du cadre de mes compétences :D

Plusieurs interrogations :

A) Pourquoi utiliser SLEEP et non un timer ?
B) que signifie Showmodal ?
C) Où est la comparaison avec la date actuelle ?

Merci pour tes réponses.
;)
Prokopy#4 Posté le 4/6/2012 à 18:20:35
Kinder Pingui
A) Pourquoi utiliser SLEEP et non un timer ?


C'est une question d'utilisation de ressources processeur. Beaucoup de personnes râlent quand des démons qui sont censés agir toutes les minutes réclament du CPU en permanence (et moi le premier ;) ).

La différence, c'est qu'avec un Timer, la boucle d'évènements de Gambas va continuer à tourner, et vérifier plusieurs fois par seconde si l'échéance est passée ... ce qui est plutôt inutile.
Avec Sleep, la main est complètement rendue au système pour un temps donné (ici 60 secondes). De ce fait, Gambas ne fera absolument rien pendant ces 60 secondes, il sera "endormi", jusqu'à l'échéance.

La contrepartie avec Sleep, c'est qu'il est moins précis qu'un Timer (si le système a beaucoup de boulot, le "réveil" peut être retardé de quelques dixièmes de seconde. Mais c'est largement négligeable sur 60 secondes. :)

Pour résumer :

  • Temps d'attente long -> Sleep
  • Temps d'attente court -> Timer (ou Wait)


B) que signifie Showmodal ?


La différence entre ShowModal() et Show(), c'est que ShowModal() est une fonction dite bloquante. C'est-à-dire que tant que le formulaire est ouvert, le code précédent ne peut pas continuer.

C'est le principe des boîtes de dialogue (des fenêtres "modales", d'où ShowModal) : tant que ton message d'erreur (ou autre) n'est pas fermé par l'utilisateur, la fenêtre située en-dessous est bloquée.

http://gambasdoc.org/help/comp/gb.qt4/window/showmodal?fr&v3

C) Où est la comparaison avec la date actuelle ?


Je ne l'ai pas mise. En fait, j'y ai juste fait allusion avec If il_Y_A_Des_Alertes Then pour que tu comprennes la suite, ça je pense que tu es assez grand pour t'en sortir tout seul. ;)
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
spheris#5 Posté le 5/6/2012 à 10:14:21
J'ai tout compris !
T'es un chef !
Merci infiniment !
;)

Message resolved ! :D
gambix#6 Posté le 13/7/2012 à 11:03:09
Faire simple !donc si je te suis prok j'aurais du utiliser sleep dans mon deamon de mail ?
Moins de texte dans une signature c'est agrandir son espace.
spheris#7 Posté le 16/7/2012 à 00:12:40
Yes gambix, c'est ce que j'ai fais et cela marche impec...
Par contre j'ai pas essayé un petit TOP pour voir si cela mange des ressources...
;)
1