Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#7

AW: Mini-Flugzeugsimulator

  Alt 25. Mär 2015, 01:27
normalerweise misst man, wie viel Zeit seit dem letzten Frame vergangen ist. Und diese gemessene Zeit geht dann in die Berechnung ein. Die Darstellung ist dann nur wenig davon abhängig, wie schnell der PC rechnen kann.
Nicht nur wie schnell der PC ist ... auch TTimer wird niemals die gewollte Auflösung von 1ms hinbekommen
und da nebenbei auch noch andere Programme und das eigene Programm die Ausführng des Timerevents verzägern können, wird es je nach CPU-Auslastung noch "schlimmer".

Einfach mal ausprobieren und sich freuen, wie schon ohne viel Code der Timer (Count links) der echten Zeit (rechts) hinterherläuft.
Delphi-Quellcode:
var
  Count, Start: Cardinal;

procedure TForm3.FormCreate(Sender: TObject);
begin
  Start := GetTickCount;
end;

procedure TForm3.Timer1Timer(Sender: TObject);
begin
  Inc(Count);
  Caption := Format('%d %d', [Count, GetTickCount - Start]);
end;
bzw. (z.B. für FMX)
Delphi-Quellcode:
var
  Count: Cardinal;
  Start: TDateTime;

procedure TForm3.FormCreate(Sender: TObject);
begin
  Start := Now;
end;

procedure TForm3.Timer1Timer(Sender: TObject);
begin
  Inc(Count);
  Caption := Format('%.0n %.0n', [Count/1, MilliSecondSpan(Now, Start)]);
end;
PS: Wert2 durch Wert1 = das, was dein PC gerade jetzt für ein Timer1.Interval "wirklich" hinbekommt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (25. Mär 2015 um 01:30 Uhr)
  Mit Zitat antworten Zitat