Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.439 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Nach Timer.Enable killt sich das Programm

  Alt 6. Sep 2021, 07:07
Ich vermute auch das "CleanupInstance" da nicht hingehört, kommentiere das mal aus.

Statt den Timer immer wieder aus und ein zu schalten, ist es vieleicht besser die vergangene Zeit seit dem letzen Aufruf zu testen.
Delphi-Quellcode:
    procedure Hauptschleife(Owner: TObject);
  private
    SteuerungAktiv: Boolean;
    NextStart: TDateTime;
    procedure DoSteuerung;
  end;

implementation

const
  StartIntervall = 1{s} /24/60/60;
  Startverzoegerung = 10{s} /24/60/60;

function NowUTC: TDateTime;
var
  SystemTime: TSystemTime;
begin
  GetSystemTime(SystemTime);
  Result := SystemTimeToDateTime(SystemTime);
end;

procedure THauptformular.Hauptschleife(Owner: TObject);
begin
  if not SteuerungAktiv then
  begin
    SteuerungAktiv := True;
    if NowUTC >= NextStart then
    begin
      NextStart := NextStart + StartIntervall; // alternativ NowUTC + StartIntervall
      DoSteuerung;
    end;
    SteuerungAktiv := False;
  end;
end;

procedure THauptformular.Counterstop(Owner: TObject);
Begin
  TimerEx1.Enabled:=False;
end;

procedure THauptformular.CounterStart(Owner: TObject);
Begin
  NextStart := NowUTC + Startverzoegerung;
  TimerEx1.Enabled:=True;
end;

Geändert von Blup ( 6. Sep 2021 um 07:40 Uhr)
  Mit Zitat antworten Zitat