1,96384243517295E-7 in Millisekunden

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Andromeda
Beiträge: 120
Registriert: So 4. Jan 2015, 20:18

1,96384243517295E-7 in Millisekunden

Beitrag von Andromeda »

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,

wp_xyz
Beiträge: 5153
Registriert: Fr 8. Apr 2011, 09:01

Re: 1,96384243517295E-7 in Millisekunden

Beitrag von wp_xyz »

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.

Andromeda
Beiträge: 120
Registriert: So 4. Jan 2015, 20:18

Re: 1,96384243517295E-7 in Millisekunden

Beitrag von Andromeda »

Ja, aber das habe ich doch gemacht.

Code: Alles auswählen

Label1.Caption:= FloatToStr((t2-t1)/86.400);

Socke
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

Beitrag von Socke »

wp_xyz hat geschrieben:multiplizeren
Edit: mit FloatToStrf hast du mehr Möglichkeiten die Ausgabe zu beinflussen.
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

Andromeda
Beiträge: 120
Registriert: So 4. Jan 2015, 20:18

Re: 1,96384243517295E-7 in Millisekunden

Beitrag von Andromeda »

Entschuldigung. Gerade habe ich es bemerkt. Ich muß multiplizieren, statt dividieren. Vielen Dank

wp_xyz
Beiträge: 5153
Registriert: Fr 8. Apr 2011, 09:01

Re: 1,96384243517295E-7 in Millisekunden

Beitrag von wp_xyz »

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:

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]);
 
Übrigens: bei deiner Rechnung fehlt der Faktor 1000 für die Millisekunden, du berechnest also nur die Sekunden

Antworten