Déclencher des instructions dans un temps définie [Résolu]

Signaler
Messages postés
7
Date d'inscription
jeudi 17 janvier 2008
Statut
Membre
Dernière intervention
28 février 2009
-
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
-
bonjour,

j'utilise dernièrement un comp. RzClockStatus qui m'affiche le temps actuel en directe et ce que je veux c'est de pouvoir faire déclencher une mise a jour de mon application (peu importe..) quand l'heure soit à Minuit (00:00:00) vous voyez c'est a dire les déclencher en directe ss faire qlq chose! bon d'aprés les evenements permises de ce RzClockStatus apart les connus (Click, dblclick,.....) ya deux qui sont intéressante de premiere vu:
ONGETDATETIME: (procedure Tform1.RzClockStatus1GetDateTime(Sender: TObject; var DateTime: TDateTime);
ONTIMEREXPIRED: procedure TMenu_principale.RzClockStatus1TimerExpired(Sender: TObject);

(bon déja la premiere sent que c la bonne ) donc jlé essayé:

procedure TForm1.RzClockStatus1GetDateTime(Sender: TObject; var DateTime: TDateTime);
begin
if DateToStr(DateTime)='00:00:00' then
begin
.........(instruc

......      de

...         mises

..         a jour)

end;

Malheureusement jé rien eu comme résultat j'aimerais que quelquen puisse me donner un coup de main
RQ: Mes instructions de mises a jour marche bien car ils sont les même que
j'ai mis avant dans l'evenement on show et on activate de FORM1

Merci d'avance!

4 réponses

Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
var
 H,M,S,Z : Word;
begin
  DecodeTime(Now, H,M,S,Z);
  if (H 12) and (M 0)  then
  begin
  end
  else  if (H 14) and (M 30) then
  begin
  end;
end;

ou encore

var
  H,M,S,Z : word;
  TimeEvent : word;
begin
  DecodeTime(Now, H, M, S, Z);
  TimeEvent := (H * 100) or M;
  case TimeEvent of
    30 : il est 0H30
    420 : il est 4H20
    1200 : il est 12H00
    1430 : il est 14H30
    1945 : il est 19H45
  end;
end;

<hr width="100%" size="2" />
Messages postés
7
Date d'inscription
jeudi 17 janvier 2008
Statut
Membre
Dernière intervention
28 février 2009

Re,

 Gros merci a toi f0xi mon truc marche à présent je n'y avais pas pensé!!

Allé bon code!
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
de rien, pour ce genre de chose, pense toujours "mathematique" plus que "texte".
il faut traiter l'information comme un appareil electronique et non comme si on le faisait manuellement.

prix, horraires, taux, dates, etc, toujours les traiter en brut sans transformation textuelle.
les performances n'en seront que meilleures en plus.

<hr size="2" width="100%" />
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
on pourrait même faire :

type
  TTimeEvents = array[0..23, 0..59] of boolean;

var
  TimeEvents : TTimeEvents;

procedure TForm1.Timer1Timer(sender: TObject);
var
  H,M,S,Z : word;
begin
  DecodeTime(Now, H, M, S, Z);
  if TimeEvents[H,M] then
  begin
   
  end;
end;

ou encore :

type
  TTimeEvent = record
    Code : byte;
    Active : boolean;
  end;
  pTimeEvent = ^TTimeEvent;

  TTimeEvents = array[0..23, 0..59] of TTimeEvent; 
  pTimeEvents = ^TTimeEvents;

const
  cTimeEventA = $01;
  cTimeEventB = $02;
  cTimeEventC = $04;
  cTimeEventD = $08;
 
var
  TimeEvents = TTimeEvents;

procedure TForm1.Timer1Timer(Sender: TObject);
var H,M,S,Z : word;
begin
  DecodeTime(Now, H, M, S, Z);
  if TimeEvents[H, M].Active then
    case TimeEvents[H, M].Code of
      cTimeEventA : ...
      cTimeEventB : ...

      cTimeEventC : ...

      cTimeEventD : ...
    end;

end;

<hr size="2" width="100%" />