Hallo,
ich möchte eine Zeitdifferenz in Millisekunden messen, komme beim Ergebnis aber mit der Schreibweise nicht zurecht. In meinem Testprogramm habe ich zwei Buttons, die mir über "now" t1 und t2 liefern. Das Ergebnis möchte ich in einem Label anzeigen:
Label1.Caption:= FloatToStr((t2-t1)/86.400);
Mit dem Wert 1,96384243517295E-7 kann ich leider nichts anfangen. Wahrscheinlich stimmt er sogar, aber ich möchte xxxx Millisekunden sehen.
Ich wäre sehr dankbar, wenn mir jemand auf die Sprünge helfen würde,
1,96384243517295E-7 in Millisekunden
Re: 1,96384243517295E-7 in Millisekunden
Wenn du mit TDateTime-Werten arbeitest, die z.B. von der Funktion Now ausgespuckt werden, dann ist die Einheit Tage. Du musst also die ermittelte Zeitdifferenz mit 24*60*60*1000 multiplizeren (1 Tag hat 24 Stunden, 1 Stunde 60 Minuten, 1 Minute 60 Sekunden, 1 Sekunde 1000 Millisekunden), um das in Millisekunden umzuwandeln.
Re: 1,96384243517295E-7 in Millisekunden
Ja, aber das habe ich doch gemacht.
Code: Alles auswählen
Label1.Caption:= FloatToStr((t2-t1)/86.400);
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: 1,96384243517295E-7 in Millisekunden
Edit: mit FloatToStrf hast du mehr Möglichkeiten die Ausgabe zu beinflussen.wp_xyz hat geschrieben:multiplizeren
Zuletzt geändert von Socke am Mo 21. Mär 2016, 20:39, insgesamt 1-mal geändert.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: 1,96384243517295E-7 in Millisekunden
Entschuldigung. Gerade habe ich es bemerkt. Ich muß multiplizieren, statt dividieren. Vielen Dank
Re: 1,96384243517295E-7 in Millisekunden
Hab ich nicht gesehen. Dann ist eine der beiden Variablen t1 und t2 nicht initialisiert. Du musst die aktuelle Zeit vor der Zeitmessung nach t1 und dann nach der Zeitmessung nach t2 schreiben:
Übrigens: bei deiner Rechnung fehlt der Faktor 1000 für die Millisekunden, du berechnest also nur die Sekunden
Code: Alles auswählen
var
t1, t2: TDateTime;
begin
t1 := now;
// hier ist die Routine, deren Laufzeit gemessen werden soll.
// Am besten in eine großen Schleife, um die Zeit zu verlängern, damit's genauer wird.
t2 := now;
Label1.Caption := Format('Laufzeit %.0f ms', [(t2-t1)*86400000]);