Delphi-PRAXiS
Seite 1 von 3  1 23   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Sekunden und Millisekunden anzeigen (https://www.delphipraxis.net/106013-sekunden-und-millisekunden-anzeigen.html)

TheMiller 3. Jan 2008 23:24


Sekunden und Millisekunden anzeigen
 
Hallo,

ich versuche die zwischen zwei Zeitpunkten vergangene Zeit in Sekunden und Millisekunden anzuzeigen. Ich habe auch schon eine Funktion, aber die Zeit läuft irgendwie zu schnell...

Delphi-Quellcode:
var
  h, m, s: Word;
  Diff: Integer;
begin
  TimeNow:=GetTickCount;
  Diff:=TimeNow - StartTime;
  m:=Diff div 60;
  s:=Diff mod 60;
  Form1.Caption:=Format('%.2d:%.2d', [m, s]);
Wie bekomme ich da auchnoch die ms dazu?

Danke

omata 3. Jan 2008 23:29

Re: Sekunden und Millisekunden anzeigen
 
Schau dir mal DecodeDateTime an.

TheMiller 3. Jan 2008 23:30

Re: Sekunden und Millisekunden anzeigen
 
Meine Hilfe geht nicht.. Hab Windows Vista und Delphi 7 und da geht die Hilfe nicht mehr??

fLaSh11 3. Jan 2008 23:31

Re: Sekunden und Millisekunden anzeigen
 
Also ich finde den QueryPerformanceCounter am besten.

Das hier
Hier im Forum suchenQueryPerformanceCounter
Hier im Forum suchenQueryPerformanceFrequency

denötigst du, um berechnungen anzustellen.

Der hat mich nie im Stich gelassen :firejump:

//Edit: Natürlich das für dich interessante ist, dass das Ergebnis in µSek herauskommt. Also nur noch durch 1000 für mSek bzw. durch 1000² für Sek teilen.

Blackheart 3. Jan 2008 23:42

Re: Sekunden und Millisekunden anzeigen
 
Zitat:

Zitat von DJ-SPM
Meine Hilfe geht nicht.. Hab Windows Vista und Delphi 7 und da geht die Hilfe nicht mehr??

Schau hier

grenzgaenger 4. Jan 2008 00:22

Re: Sekunden und Millisekunden anzeigen
 
weshalb soll das nicht gehen?
Delphi-Quellcode:
var
 anfang, differenz: cardinal;
begin
 anfang := gettickcount();  
 //was dazwischen
 differenz := GetTickDiff(Anfang, GetTickCount()); //differnz in millisekunden
was mir aufgefallen ist, ist

a) deine variable StartTime nicht initialisiert
b) arbeitest du mit zu kleinen variablen
c) wandelst du deine werte falsch um.

denk dran, gettickcount gibt die anzahl der verstrichenen millisekunden zurück ... <HTH>

TheMiller 4. Jan 2008 00:55

Re: Sekunden und Millisekunden anzeigen
 
Hey!

Die Variable ist initialisiert, aber nicht in dieser Prozedur, sondern in einem Button.OnClick.

Würde gerne GetTickDiff aufrufen, aber es wird bei mir nicht gefunden. In welcher Unit ist die? Achso: Und meine Hilfe funzt wieder! Danke! Doch da steht weder zu GetTickCount noch zu GetTickDiff was drin...

Danke

grenzgaenger 4. Jan 2008 01:16

Re: Sekunden und Millisekunden anzeigen
 
GetTickDiff() //IdGlobal
GetTickCount()//Windows

TheMiller 4. Jan 2008 02:05

Re: Sekunden und Millisekunden anzeigen
 
Ich habe nun folgenden Code:

Delphi-Quellcode:
Diff:=GetTickDiff(StartTime, GetTickCount());
s:=Diff div 60; //für Sekunden
Form1.Caption:=Format('%.2d', [s]);
Jetzt sehe ich ja in der Caption der Form die "Sekunden". Doch die laufen viel zu schnell und stimmen nicht mit "realen" Sekunden überein! Wieso nicht? Was mache ich falsch?

StartTime ist übrigens dann initialisiert, wenn der Timer gestartet wird und bekommt den aktuellen GetTickCount-Wert.

danke.

grenzgaenger 4. Jan 2008 02:19

Re: Sekunden und Millisekunden anzeigen
 
Zitat:

Zitat von DJ-SPM
Ich habe nun folgenden Code:

Delphi-Quellcode:
Diff:=GetTickDiff(StartTime, GetTickCount());
s:=Diff div 60; //für Sekunden
Form1.Caption:=Format('%.2d', [s]);
Jetzt sehe ich ja in der Caption der Form die "Sekunden". Doch die laufen viel zu schnell und stimmen nicht mit "realen" Sekunden überein! Wieso nicht? Was mache ich falsch?

StartTime ist übrigens dann initialisiert, wenn der Timer gestartet wird und bekommt den aktuellen GetTickCount-Wert.

danke.

Delphi-Quellcode:
Diff:=GetTickDiff(StartTime, GetTickCount());
s:=Diff div 1000; //für Sekunden <<< so wird schon eher 'n schuh draus
Form1.Caption:=Format('%.2d', [s]);
gettickcount liefert die zeit in millisekunden = 1/1000 sekunde, keine 60'tel. daher musst du hier mit 1000 dividieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:45 Uhr.
Seite 1 von 3  1 23   

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