Fórum Comparar horas com timer #292290

19/08/2005

0

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

Responder

Posts

19/08/2005

Rjun

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;



Responder

Gostei + 0

19/08/2005

Massuda

...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
    ...



Responder

Gostei + 0

19/08/2005

Marcio.theis

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;



Responder

Gostei + 0

19/08/2005

Vispo

Galera valeu pelas dicas ai!!

Abraços!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar