![]() |
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:
Wie bekomme ich da auchnoch die ms dazu?
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]); Danke |
Re: Sekunden und Millisekunden anzeigen
Schau dir mal DecodeDateTime an.
|
Re: Sekunden und Millisekunden anzeigen
Meine Hilfe geht nicht.. Hab Windows Vista und Delphi 7 und da geht die Hilfe nicht mehr??
|
Re: Sekunden und Millisekunden anzeigen
Also ich finde den QueryPerformanceCounter am besten.
Das hier ![]() ![]() 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. |
Re: Sekunden und Millisekunden anzeigen
Zitat:
![]() |
Re: Sekunden und Millisekunden anzeigen
weshalb soll das nicht gehen?
Delphi-Quellcode:
was mir aufgefallen ist, ist
var
anfang, differenz: cardinal; begin anfang := gettickcount(); //was dazwischen differenz := GetTickDiff(Anfang, GetTickCount()); //differnz in millisekunden 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> |
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 |
Re: Sekunden und Millisekunden anzeigen
GetTickDiff() //IdGlobal
GetTickCount()//Windows |
Re: Sekunden und Millisekunden anzeigen
Ich habe nun folgenden Code:
Delphi-Quellcode:
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?
Diff:=GetTickDiff(StartTime, GetTickCount());
s:=Diff div 60; //für Sekunden Form1.Caption:=Format('%.2d', [s]); StartTime ist übrigens dann initialisiert, wenn der Timer gestartet wird und bekommt den aktuellen GetTickCount-Wert. danke. |
Re: Sekunden und Millisekunden anzeigen
Zitat:
Delphi-Quellcode:
gettickcount liefert die zeit in millisekunden = 1/1000 sekunde, keine 60'tel. daher musst du hier mit 1000 dividieren.
Diff:=GetTickDiff(StartTime, GetTickCount());
s:=Diff div 1000; //für Sekunden <<< so wird schon eher 'n schuh draus Form1.Caption:=Format('%.2d', [s]); |
Re: Sekunden und Millisekunden anzeigen
Das würde natürlich einiges Erklären...
Ich probiere das dann mal aus... Danke und bis dann! |
Re: Sekunden und Millisekunden anzeigen
So, das funzt jetzt soweit, um die Millisekunden auszurechnen, habe ich noch eine Zeile hinzugefügt und scheint auch richtig zu sein. Schaut bitte nochmal.
Aber wenn ich jetzt das Format ausgebe, dann zeigt er mir 3 Stellen an, wieso??
Delphi-Quellcode:
Danke für eure Hilfe
var
s, ms: Word; Diff: Integer; begin Diff:=GetTickDiff(BPMStartTime, GetTickCount()); s:=Diff div 1000; ms:=Diff mod 1000; Form1.Caption:=Format('%.2d:%.2d', [s, ms]); |
Re: Sekunden und Millisekunden anzeigen
Zitat:
|
Re: Sekunden und Millisekunden anzeigen
Zitat:
Was möchtest du denn genau erreichen? |
Re: Sekunden und Millisekunden anzeigen
Ich möchte Sekunden und Millisekunden zweistellig anzeigen lassen, also ungefähr so
15:26 Aber geteilt habe ich bei den ms richtig, oder? |
Re: Sekunden und Millisekunden anzeigen
Zitat:
Zitat:
|
Re: Sekunden und Millisekunden anzeigen
Und was habe ich da nun falsch gesagt?
Wenn ich angebe, eine 3-stellige Zahl soll mit 5 Stellen dargestellt werden, dann werden 2 Nullen vor die Zahl gesetzt. Ich meinte jedoch, er kann bei einer 3-stelligen Zahl nicht die letzte Ziffer abschneiden. Oder geht das doch? @DJ: Ja deine Rechnung müsste stimmen. Millisekunden können von 0-999 gehen. |
Re: Sekunden und Millisekunden anzeigen
Sry, ich hatte Dich so verstanden, dass die Angabe einer Precision bei ganzen Zahlen überflüssig sei.
|
Re: Sekunden und Millisekunden anzeigen
Ich bezog mich auf die der Nachkommastellen. Evtl. habe ich mich missverständlich ausgedrückt. ;)
@DJ: Du kannst die Millisekunden natürlich so abschneiden:
Delphi-Quellcode:
Aufruf:
// Digit: 10, 100, 1000, ...
function CutIntTo(Number: Integer; Digit: Byte): Integer; begin Result := Number div Digit; end;
Delphi-Quellcode:
Ich hoffe, ich habe nun keinen Denkfehler eingebaut.
Format('%d:%d', [s, CutIntTo(ms, 10)]);
|
Re: Sekunden und Millisekunden anzeigen
Zitat:
|
Re: Sekunden und Millisekunden anzeigen
Zitat:
[/scherz] Warum machst Du auf die Millisekunden keinen DIV 10? Dann isses zweistellig.
Delphi-Quellcode:
Format('%d:%d', [s, ms div 10]);
|
Re: Sekunden und Millisekunden anzeigen
Zitat:
![]() |
Re: Sekunden und Millisekunden anzeigen
Danke an alle, die mir geholfen haben. Mit euren Vorschlägen funzt es jetzt!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:24 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