sp40
Messages postés1276Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 2015
-
25 janv. 2012 à 10:24
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 2021
-
2 juil. 2012 à 11:40
Bonjour tout le monde,
Après quelques temps passé sur d'autres langages, me voilà de retour sur ce merveilleux EDI... J'espère que l'ambiance du forum est toujours aussi bonne !
Ma question :
Existe-t'il un moyen de programmer simplement sous Delphi un événement sur une date et heure particulière autrement qu'avec un timer ?
Pour expliquer un peu le dev :
Soient des automates et un serveur. Le serveur dispose de la liste des automates. Chaque automate peut être interrogé par le serveur à une ou plusieurs heures particulières définies par l'utilisateur (ex : automate 1 interrogé à 08h00 et 15h00, automate 2 à 09h00, 12h00 et 18h00...). Je me demande s'il est possible de créer dynamiquement des événements "on08h00", "on15h00", etc... qui se déclencheront respectivement à 08h00, 15h00 etc, sans me lancer pour autant dans un développement de classe.
Je ne pense pas retenir cette solution car en cas de plantage et de redémarrage, il faut que j'interroge les automates que j'aurai dû appeler pendant la durée du plantage, mais bon, techniquement ça me semble un sujet intéressant, non ?
sp40
Messages postés1276Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 26 janv. 2012 à 09:16
Salut Cari !
Bien content de te retrouver !
Merci pour ta réponse, je vais jeter un oeil dessus. Le truc c'est qu'il faudrait que, dans le cas où je pourrais avoir un plantage à 07h00 et que le programme n'est relancé qu'à 09h00 (j'essaie d'envisager un peu tous les cas catastrophe...), le programme déclenche quand même tous les événements entre 07h00 et 09h00. J'ai aussi vu hier un composant natif du genre "ActionList", mais je n'ai pas investigué plus loin. Je vous tiens au courant...
sp40
Messages postés1276Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 6 févr. 2012 à 09:47
Ok, je viens de regarder les tâches planifiées, mais ça ne me convient pas. Je vais jeter un oeil à l'API et puis sinon, je prendrai un timer...
Merci encore en tous cas pour vos réponses.
sp40
Messages postés1276Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 9 févr. 2012 à 10:14
Oui, j'avais récupérer les bonnes sources. Le problème, c'est qu'il y avait une erreur dans une unité (de mémoire il me semble que c'est JvPascalInterpreterReg.pas). Le programme d'installation ne plantait pas, mais ne m'installait pas pour autant les composants (peut être que je n'avais pas coché la bonne case...). Il m'a fallu compiler les paquets pour qu'il me signale l'erreur. Un petit tour sur le net, et c'était réglé.
Désolé, je m'aperçois qu'on sort un peu du topic...
Juré, je le referai plus
tsainvet
Messages postés95Date d'inscriptionsamedi 27 mars 2004StatutMembreDernière intervention14 décembre 2017 12 mai 2012 à 21:58
bonjour vous .
le sujet m’intéresse je cherche de puis plusieurs heure et je trouve pas ce dont jai besoin et en lisant vos commentaire je me dit vous pourriez peut etre m'aidé?
je voudrais pouvoir ouvrir une form a une date précise.
je crée un petit programme de gestion de cave a vin ;-)
et j'aimerai que mon apli ,ouvre une Form ,une semaine avant la date apogée du vin saisie dans ma base de donnée .
je vais continué mes recherches , je repasserai sur ce topic le cas ou !!
sp40
Messages postés1276Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 15 mai 2012 à 09:40
Bonjour,
Ou bien, si tu as un champ de type date, au démarrage de ton application et sur un timer tu boucle sur ce champ pour voir quels événements sont éligibles à l'affichage
tsainvet
Messages postés95Date d'inscriptionsamedi 27 mars 2004StatutMembreDernière intervention14 décembre 2017 28 juin 2012 à 18:10
Merci pour vos réponse
voici ce que jai trouvé .
function DeltaDatetoJJMMAA(const CDate1, CDate2:TDate ) : TJJMMAA;
var
Date1 , Date2,WDate : TDate;
begin
if CompareDate(CDate1, CDate2) > 0 then begin
Date1 := CDate2;
Date2 := CDate1;
end
else begin
Date1 := CDate1;
Date2 := CDate2;
end;
with result do begin
AA := 0;
repeat
inc(AA);
WDate := Date1;
Date1 := incyear(Date1);
until comparedate(Date1, Date2) > 0;
dec(AA);
Date1 := WDate;
MM := 0;
repeat
inc(MM);
WDate := Date1;
Date1 := incmonth(Date1);
until comparedate(Date1, Date2) > 0;
dec(MM);
Date1 := WDate;
JJ := 0;
repeat
inc(JJ);
Date1 := incday(Date1);
until comparedate(Date1, Date2) > 0;
dec(JJ);
end;
end;
procedure TBDTH1.mniAlarmeApoge1Click(Sender: TObject);
var
texte : string;
Delta : TJJMMAA;
begin
Table1.Active:=True;
Table1.First;
Table1.last;
Delta := DeltaDatetoJJMMAA(DBdateEditAlarme.date, DateTimePicker1.date,);
texte := '0';
with Delta do
begin
if CompareDate(DateTimePicker1.date, DBdateEditAlarme.date ) > 0 then begin
form3.show;
Form4.Close;
sndPlaySound('c:\Ma Cave\musique\ALARM.WAV', SND_LOOP or SND_ASYNC );
end
else begin
sndPlaySound('stop', SND_ASYNC);
Form4.show;
// Form3.Close;
end