Déclencher des instructions dans un temps définie

Résolu
cs_Simone31 Messages postés 7 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 28 février 2009 - 14 févr. 2009 à 23:20
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 16 févr. 2009 à 10:55
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

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 37
15 févr. 2009 à 16:24
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" />
3
cs_Simone31 Messages postés 7 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 28 février 2009
16 févr. 2009 à 01:51
Re,

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

Allé bon code!
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 37
16 févr. 2009 à 10:42
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%" />
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 37
16 févr. 2009 à 10:55
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%" />
0