AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein GetTickCount beeinflusst von PC Auslastung
Thema durchsuchen
Ansicht
Themen-Optionen

GetTickCount beeinflusst von PC Auslastung

Ein Thema von MisterIXI · begonnen am 4. Jun 2015 · letzter Beitrag vom 5. Jun 2015
 
Popov
(Gast)

n/a Beiträge
 
#4

AW: GetTickCount beeinflusst von PC Auslastung

  Alt 4. Jun 2015, 19:39
Also die Zeit zu messen in dem man im Timer OnTimer Ereignis die Zeit, bzw. Ticks addiert ist leider ein unsinniges Unterfangen. Das Intervall ist nicht gleichmäßig. Stellt man das Intervall auf 100 ms, kann, wird aber eher nicht, das Ereignis 10 mal in der Sekunde aufgerufen werden. Somit bringt das nichts.

Besser ist den Zeitunterschied zu messen, z. B. so:
Delphi-Quellcode:
uses
  DateUtils;

var
  T1, T2: TTime;


procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Interval := 1;
  Timer1.Enabled := False;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  T1 := 0;
  T2 := 0;

  Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  MSBetween: Int64;
  TimeTemp: TTime;
begin
  if T1 = 0 then
    T1 := Time;

  T2 := Time;
  MSBetween := MilliSecondsBetween(T1, T2);
  TimeTemp := MSBetween / 24 / 60 / 60 / 1000;
  Label1.Caption := FormatDateTime('hh:nn:ss:zzz', TimeTemp);
end;
Beim Start wird die aktuelle Uhrzeit gemessen. Danach wird immer die Differenz zu der Startzeit gemessen. Da die Uhrzeit separat getaktet wird, sollte PC Auslastung keine Rolle spielen.

//EDIT:

Ich hab mir das Ganze mal angeguckt und da sind einige unnötige Zeilen. Der Code oben nur etwas kürzer:
Delphi-Quellcode:
uses
  DateUtils;

var
  T1: TTime;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Interval := 1;
  Timer1.Enabled := False;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  T1 := 0;
  Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  TimeTemp: TTime;
begin
  if T1 = 0 then
    T1 := Time;

  TimeTemp := MilliSecondsBetween(T1, Time) / 24 / 60 / 60 / 1000;
  Label1.Caption := FormatDateTime('hh:nn:ss:zzz', TimeTemp);
end;

Geändert von Popov ( 4. Jun 2015 um 21:51 Uhr)
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz