Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zeitmesser (https://www.delphipraxis.net/127706-zeitmesser.html)

nixalsverdruss 17. Jan 2009 16:59


Zeitmesser
 
Hallo,
ich möchte gern ein Label auf einem Formular haben, dass zählt, wie lange das Form schon offen ist, also, dass unten die Zeit läuft. Hat da ejemand einen Quellcode für?
Danke schon mal im Voraus
nixalsverdruss

Missionar 17. Jan 2009 17:01

Re: Zeitmesser
 
ja

blink182 17. Jan 2009 17:10

Re: Zeitmesser
 
:thumb:
top ;)

du kannst einfach einen Timer machen und dann in die Timer-Prozedur z.B. schreiben
Delphi-Quellcode:
Label1.caption:=inttostr(strtoint(Label1.caption)+1);
solltest aber dann Label1.Caption beim Form.Create oder noch davor auf 0 setzen und das Timer-Interval auf 1000 lassen

nixalsverdruss 17. Jan 2009 17:13

Re: Zeitmesser
 
okay dankeschön, probier ich gleichmal....

nixalsverdruss 17. Jan 2009 17:16

Re: Zeitmesser
 
Super!!!!!!!!!!!!!!!!!!!!! Genauso wollt ichs haben! Dankeschön! :hello:

Noedel 17. Jan 2009 17:21

Re: Zeitmesser
 
um es etwas genauer zu haben, verwende am besten GetTickCount (liefert die ms ab, die der PC schon läuft.)

fkerber 17. Jan 2009 17:23

Re: Zeitmesser
 
Hi!

Ich wäre mir aber nicht so sicher, ob das so genau funktioniert. Ich denke nämlich nicht unbedingt, dass der Timer genau im Takt 1000ms aufgerufen wird - bspw. nicht, wenn der Rechner mal gerade voll ausgelastet wird o.ä.

Ich würde zwar auch einen Timer mit Takt 1000ms nutzen, allerdings dann nicht einen Counter erhöhen, sondern die aktuelle Zeit auslesen und dann die Zeit beim Öffnen irgendwo gespeichert haben und dann die Differenz ordentlich formatiert ausgeben.


Ciao, Frederic

blink182 17. Jan 2009 17:31

Re: Zeitmesser
 
Zitat:

Ich würde zwar auch einen Timer mit Takt 1000ms nutzen, allerdings dann nicht einen Counter erhöhen, sondern die aktuelle Zeit auslesen und dann die Zeit beim Öffnen irgendwo gespeichert haben und dann die Differenz ordentlich formatiert ausgeben.
ja das scheint mir auch sinnvoller, hatte ich auch am anfang schon gedacht, aber soll er entscheiden wie er es umsetzen möchte

DeddyH 17. Jan 2009 17:41

Re: Zeitmesser
 
Zitat:

Zitat von fkerber
Hi!

Ich wäre mir aber nicht so sicher, ob das so genau funktioniert. Ich denke nämlich nicht unbedingt, dass der Timer genau im Takt 1000ms aufgerufen wird - bspw. nicht, wenn der Rechner mal gerade voll ausgelastet wird o.ä.

Ich würde zwar auch einen Timer mit Takt 1000ms nutzen, allerdings dann nicht einen Counter erhöhen, sondern die aktuelle Zeit auslesen und dann die Zeit beim Öffnen irgendwo gespeichert haben und dann die Differenz ordentlich formatiert ausgeben.


Ciao, Frederic

Das denke ich auch. Dazu mal ein Beispiel aus dem Kopf getippt (keine Garantie):
Delphi-Quellcode:
type
  TMyForm = class(TForm)
    MyTimer: TTimer;
    MyLabel: TLabel;
    ...
    procedure FormCreate(Sender: TObject);
  private
    FStart: TDateTime;
    ...
  end;

...

uses DateUtils;
...

procedure TMyForm.FormCreate(Sender: TObject);
begin
  FStart := now; //Startzeit merken
end;

procedure TMyForm.MyTimerTimer(Sender: TObject);
const SecsPerMinute = 60;
      SecsPerHour = SecsPerMinute * 60;
var dwSecDiff: Cardinal;
begin
  dwSecDiff := DateUtils.SecondsBetween(now,FStart); //Zeitdifferenz in Sekunden
  MyLabel.Caption := Format('%.2d Stunden, %.2d Minuten, %.2d Sekunden',
                            [dwSecDiff div SecsPerHour,
                             dwSecDiff mod SecsPerHour div SecsPerMinute,
                             dwSecDiff mod SecsPerMinute]);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz