Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - stop uhr bei der zeit abgefragt werden kann


detlef-d - Sa 12.06.10 18:51
Titel: stop uhr bei der zeit abgefragt werden kann
hi,

ich bräuchte noch eine kleine funktion bei der die ermittelte laufzeit abgefragt werden + gestoppt werden
und wo ich z.b. dadruch jede Minute einen variablen wert verändern kann.
gibt es etwas derartiges?

mfg

Moderiert von user profile iconNarses: Titel geändert.


Georg08 - Sa 12.06.10 18:57

Also jede Minute eine Variable ändern geht mit einemn Timer:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var
  Timer1: TTimer;
begin
  Timer1:= TTimer.Create(self);
  Timer1.Enabled:= true;
  Timer1.Interval:= 1000//1000 entspricht einer Sekunde
  Timer1.OnTimer:= Form1.Ontime;
end;

procedure TForm1.OnTime(Sender: TObject);
begin
  //hier die Variable ändern
end;

hab den code nicht getestet


detlef-d - Sa 12.06.10 19:43

und wenn ich schon einen bestehenden timer habe
der z.b mit dem intervall 100 läuft,
wie kann ich dort nach einer gewissen zeit einen variablen wert erhöhen
bzw die zeit auslesen die der timer gelaufen ist?


jaenicke - Sa 12.06.10 19:51

Du kannst dir in einem privaten Feld z.B. die Startzeit merken und die mit der aktuellen vergleichen.

Beispiel:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
private
  FStartTime: Cardinal;

// Starten:
FStartTime := GetTickCount;
MyTimer.Enabled := True;

// im Timer:
MyLabel.Caption := 'Vergangene Millisekunden: ' + IntToStr(GetTickCount() - FStartTime);


ffgorcky - Mo 14.06.10 20:15

Meinst Du das ganz einfach so?:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
var //Form-Variablen
ZeitInMS:Integer;

procedure ButtonStartStopOnClick(Sender: TObject);
begin
TimerStopDieZeit.Enabled:= not TimerStopDieZeit.Enabled;
if (TimerStopDieZeit.Enabled) then
   begin
   ZeitInMS:=0;
   LabelVergangeneZeit:Caption:=IntToStr(ZeitInMS);
   end;
end;

procedure TimerStopDieZeitOnTimer(Sender: TObject);
begin
ZeitInMS:=ZeitInMS+1;
LabelVergangeneZeit.Caption:=IntToStr(ZeitInMS)
end;

Dabei müsstest Du dann nur den Timer.Intervall auf 1000 haben.


delfiphan - Mo 14.06.10 21:22

Alternativ kannst du GetPerformanceCounter / GetPerformanceFrequency verwenden.