Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Lazarus - Time

Zdravím
Jsem už v tom dlouho nedělal tak bych rad poprosil o pomoc.
Potřebují podminku IF, ktera i když bude splněna třeba 100 x za minutu, aby se vykonala jen jednou za 5 minut.
Jak na to?


var
a,b: integer;
MyTime,MyTime1: TDateTime;
begin
if (a = b) and (MyTime1 < MyTime)  then
                                      begin
                                        MyTime1 := MyTime + StrToTime('00:05:00');
                                        beep;
                                      end;
end;

Myslim že existuje přimo nějaka funkce na porovnavaní času, ale nemohu najit.

Předmět Autor Datum
Podminku mas dobre, Tdatetime je cislo. Pred desetinnou carkou je datum, za nim cas. Porovnavat to m…
Jan Fiala 26.08.2018 09:37
Jan Fiala
Už funguje :-) S tým TTimer, jsem to nějak nepochopil?
Petr Hromada 26.08.2018 10:46
Petr Hromada
Chtěl jsi po 5 minutách něco spustit, pokud se to stane víc jak 100x Timer (časovač) Nastavíš interv…
Jan Fiala 26.08.2018 11:31
Jan Fiala
Si asi špatně rozumime. Mam buton a klikan furt na něj. Ja potřebují, aby se to v procedure TForm1.B…
Petr Hromada 26.08.2018 13:09
Petr Hromada
Lazarus nemám, neviem aké funkcie pre porovnanie časov obsahuje... V Delphi by som to urobil nejak t… poslední
pme 26.08.2018 14:05
pme

Podminku mas dobre, Tdatetime je cislo. Pred desetinnou carkou je datum, za nim cas. Porovnavat to muzes a bude to fungovat.
Na podobne veci je lepsi TTimer, kde si nastavis interval 5 minut a v udalosti zkontrolujes podminku na pocet. Kdyz bude vetsi jak 100, udelas, co potrebujes

Chtěl jsi po 5 minutách něco spustit, pokud se to stane víc jak 100x
Timer (časovač)
Nastavíš interval na 1000*60*5 (5 minut v milisekundách)
Napíšeš událost, kde otestuješ, zda se to stalo 100x a pokud ano, něco uděláš.
Timer se bude spouštět každých 5 minut a nebude blokovat hlavní vlákno aplikace.

Lazarus nemám, neviem aké funkcie pre porovnanie časov obsahuje...
V Delphi by som to urobil nejak takto:

unit Unit3;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm3 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    Cas: TDateTime;  
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

uses DateUtils;

{$R *.dfm}

procedure TForm3.FormCreate(Sender: TObject);
begin
  Cas := 0;
end;

procedure TForm3.Button1Click(Sender: TObject);
var T1: TDateTime;
begin
  T1 := now;
  if MinutesBetween(t1, cas) >= 5 then
   begin
     Cas := now;
     // Tvoj kod....
   end;
end;

end.

Zpět do poradny Odpovědět na původní otázku Nahoru