Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zeit in Label wiedergeben (https://www.delphipraxis.net/10649-zeit-label-wiedergeben.html)

hacker 22. Okt 2003 19:25


Zeit in Label wiedergeben
 
Guten Abend alerseits!

Ich hab da wieder mal eine Frage.Wie kann ich machen, das durch einen Timer, die Zeit in einem Label wiedergegeben wird?Etwa so: 00:00:00
(min : s : 1/100s)

Ich wäre froh, wenn mir da mal jemand ein Beispiel machen könnte.

Schon mal danke.


Gruss Häcki :hi:

RomanK 22. Okt 2003 19:34

Re: Zeit in Label wiedergeben
 
Hoi,
willst du die Systemzeit oder die vergangene Zeit angeben ???
Und wenn ich mich nicht irre hatten wir das schon ... suche mal in der CodeLibrary oder DP

Matze 22. Okt 2003 19:45

Re: Zeit in Label wiedergeben
 
Ich wollte dir das programmieren, aber ich schaff's nicht. :wall:

Keine Ahnug, wieso's nicht geht! Es ist dann auch noch so, dass statt 00 nur 0 dasteht, aber bei mir zählt es die Minuten hoch??

Delphi-Quellcode:
var Min, Sek, HundSek: Integer;

...

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Interval:=10;
  inc(HundSek);
  if HundSek mod 100 = 0 then
  begin
    HundSek:=0;
    inc(Sek);
  end;
  if Sek mod 60 = 0 then
  begin
    Sek:=0;
    inc(Min);
  end;
  Label1.Caption:=IntToStr(Min)+':'+IntToStr(Sek)+':'+IntToStr(HundSek);
end;
Weiß zufällig jemand, wieso das nicht geht? :gruebel:

Sorry, dass ich auch nicht helfen konnte. :oops:

Mirilin 22. Okt 2003 19:52

Re: Zeit in Label wiedergeben
 
:hi:

@Matze

Delphi-Quellcode:
procedure TForm1.TimerTimer(Sender: TObject);
begin
  inc(Hun);
  if Hun = 100 then
  begin
    Hun := 0;
    inc(Sek);
  end;
  if Sek = 60 then
  begin
    Sek := 0;
    inc(Min);
  end;
  LabelTime.Caption := IntToStr(Min)+':'+IntToStr(Sek)+':'+IntToStr(Hun);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer.Enabled := False;
  Timer.Interval := 100;
  Timer.Enabled := True;
end;
so klappts bei mir.

Edit : das ding läuft zu langsam, falsches Interval beim Timer, aber naja

CloudStrife 22. Okt 2003 20:01

Re: Zeit in Label wiedergeben
 
Wie beommt man das richtige Interval raus ??

MfG Cloud

Mirilin 22. Okt 2003 20:06

Re: Zeit in Label wiedergeben
 
Zitat:

Die Eigenschaft Interval gibt die Zeit in Millisekunden an, die verstreicht, bevor die Timer-Komponente das nächste Ereignis OnTimer initialisiert.
Du willst 1/100 folglich wäre es wohl Interval = 10.

Matze 22. Okt 2003 20:07

Re: Zeit in Label wiedergeben
 
Danke Tobi!

Bei mir geht's mit Interval 10!

RomanK 22. Okt 2003 20:12

Re: Zeit in Label wiedergeben
 
Das ist aber ungenau ... der Timer schafft nicht genau ...
Such mal im Forum nach Hier im Forum suchenGetTickCount
Da sollte einiges kommen..

Mirilin 22. Okt 2003 20:16

Re: Zeit in Label wiedergeben
 
Delphi-Quellcode:
...
Start : TTime;
...
procedure TForm1.TimerTimer(Sender: TObject);
begin
  LabelTime.Caption := FormatDateTime('nn"::"ss"::"zzz',Now-Start);
end;

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

Würde auch gehen, ob genau, weiss ich nicht.

RomanK 22. Okt 2003 20:29

Re: Zeit in Label wiedergeben
 
Hoi,
ich habs mal mit GetTickCount versucht:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
milsek,tdiv: cardinal;
begin
milsek := GetTickCount;
tdiv := milsek-starttime;
if tdiv >= 1000 then
begin
inc(sek);
starttime := starttime + 1000;
end;
if sek >= 60 then
begin
sek := 0;
inc(min);
end;
label1.Caption := inttostr(min)+':'+inttostr(sek)+':'+inttostr(tdiv);
end;
Am Anfang muss starttime "gesetzt" werden, natürlich auch mit GetTickCount.
Und die drei anderen Vars noch global definieren:
Delphi-Quellcode:
var
min,sek,starttime : Cardinal;

SirThornberry 22. Okt 2003 20:30

Re: Zeit in Label wiedergeben
 
wie kann man es jetzt noch verhindern das dabei das Label nicht flackert bei der Aktuallisierung. (hängt vermutlich irgendwie mit parent.repaint oder so zusammen wenn das Label repainted wird)

Matze 22. Okt 2003 20:33

Re: Zeit in Label wiedergeben
 
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  DoubleBuffered:=true;
end;

hacker 22. Okt 2003 20:42

Re: Zeit in Label wiedergeben
 
Das war schon fast mehr als ich wollte. :-D
Wenn ich das mir so ansehe, ist es eigentlich sehr simpel. :?

Ich danke euch allen. :hello:


Gruss Häcki :hi:

Wormid 22. Okt 2003 20:53

Re: Zeit in Label wiedergeben
 
Will auch ne Lösung posten: :mrgreen:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var h, m, s, msec: Word;
begin
  if Timer1.Tag = 0 then Timer1.Tag := GetTickCount;
  DecodeTime(((Timer1.Tag - GetTickCount) / MSecsPerDay), h, m, s, msec);
  msec := msec div 10;
  Label1.Caption := Format('%.2d:%.2d:%.2d', [m, s, msec]);
end;
:hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:39 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 by Thomas Breitkreuz