Bonjour,
Quelle est la méthode la plus fiable pour exécuter une tâche à heure fixe dans un programme qui tourne en permanence en tâche de fond : le timer à 1 seconde avec des tests de condition ?
Merci,
Mathieu
Bonjour,
Quelle est la méthode la plus fiable pour exécuter une tâche à heure fixe dans un programme qui tourne en permanence en tâche de fond : le timer à 1 seconde avec des tests de condition ?
Merci,
Mathieu
C'est comme cela que je ferais.
Mais est-il nécéssaire de tester toutes les secondes ?
André
Ils ne savaient pas que c'était impossible, alors ils l'ont fait !
Bonsoir,
Je suis en train de tester ce code :
Il a l'air de bien fonctionner.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 procedure TForm1.Timer1Timer(Sender: TObject); var MonHeure : TDateTime; Heure, Minute, Seconde, milliSec : Word; begin MonHeure := Now; DecodeTime(MonHeure,Heure, Minute, Seconde,milliSec); if (Heure = 19) and (Minute = 5) then Memo1.Lines.Add(FormatDateTime('dd/mm/yyyy hh:nn:ss',MonHeure)); if (Heure = 19) and (Minute = 10) then Memo1.Lines.Add(FormatDateTime('dd/mm/yyyy hh:nn:ss',MonHeure)); if (Heure = 19) and (Minute = 15) then Memo1.Lines.Add(FormatDateTime('dd/mm/yyyy hh:nn:ss',MonHeure)); if (Heure = 19) and (Minute = 20) then Memo1.Lines.Add(FormatDateTime('dd/mm/yyyy hh:nn:ss',MonHeure)); if (Heure = 19) and (Minute = 25) then Memo1.Lines.Add(FormatDateTime('dd/mm/yyyy hh:nn:ss',MonHeure)); end;
Mathieu
tu peux aussi setter l'interval de ton timer pour qu'il soit declenché à ladite heure, en faisant la difference entre l'heure voulue et le moment ou tu affecte l'interval.
un peu de 'toilettage' ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 procedure TForm1.Timer1Timer(Sender: TObject); var Heure, Minute, Seconde, milliSec : Word; begin DecodeTime(now,Heure, Minute, Seconde,milliSec); if (Heure = 19) then case minute of 5,10,15,20,25 :Memo1.Lines.Add(FormatDateTime('dd/mm/yyyy hh:nn:ss',MonHeure)); end; end;
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Bonjour,
C'est en effet un peu plus optimisé comme cela, je vais effectuer les corrections dans mon code.
Merci,
Mathieu
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager