Comparar horas com timer

Delphi

19/08/2005

Quero fazer uma rotina que fique comparando a hora do sistema com uma hora armazenada em uma variável, desenvolvi a seguinte rotina mas não está funcionando:

Ele entra no IF uma vez, e depois não entra mais...

procedure TForm1.FormCreate(Sender: TObject);
begin
  hora_alarme    := Time + StrToTime(´00:00:05´);
  Label1.Caption := TimeToStr(hora_alarme);
  Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if Time = hora_alarme then
  begin
    MessageDlg(´Teste´, mtWarning, [mbOK], 0);
    hora_alarme    := Time + StrToTime(´00:00:05´);
    Label1.Caption := TimeToStr(hora_alarme);
  end;
end;



Vispo

Vispo

Curtidas 0

Respostas

Rjun

Rjun

19/08/2005

Acontece que dificilmente você conseguirá fazer com que [b:62e4c95358]Time = hora_alarme[/b:62e4c95358] devido os milessegundos.

Faça a comparação da seguinte forma:

if TimeToStr(Time) = TimeToStr(hora_alarme) then 
begin 
  MessageDlg(´Teste´, mtWarning, [mbOK], 0); 
  hora_alarme    := Time + StrToTime(´00:00:05´); 
  Label1.Caption := TimeToStr(hora_alarme); 
end;



GOSTEI 0
Massuda

Massuda

19/08/2005

...uma rotina que fique comparando a hora do sistema com uma hora armazenada em uma variável...
Como você está comparando valores TDateTime (que são valores Double), o ideal é evitar testar igualdade, pois valores em ponto flutuante não possuem internamente representação exata. Experimente testar se já passou da hora do alarme...
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if Time >= hora_alarme then
  begin
    ...



GOSTEI 0
Marcio.theis

Marcio.theis

19/08/2005

declare uma variável do tipo string;

hora_alarme: String;

procedure TForm1.FormCreate(Sender: TObject);
begin
hora_alarme:=TimeToStr(Time + StrToTime(´00:00:05´));
Label1.Caption:=hora_alarme;
Timer1.Enabled:=True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if TimeToStr(Time) = hora_alarme then
    begin
    MessageDlg(´Teste´, mtWarning, [mbOK], 0);
    hora_alarme:=TimeToStr(Time + StrToTime(´00:00:05´));
    Label1.Caption:=hora_alarme;
    end;
end;



GOSTEI 0
Vispo

Vispo

19/08/2005

Galera valeu pelas dicas ai!!

Abraços!


GOSTEI 0
POSTAR