Entwickler-Ecke
Sonstiges (Delphi) - Millisekunden
donarac - Mo 01.11.04 16:00
Titel: Millisekunden
Hallo Leute,
ich versuche ein kleines Programm zu scheiben, dass die verstrichene Zeit zwischen dem Loslassen der linken Maustaste bis zum Drücken der rechten Maustaste berechnet.
Der Wert soll im Millisekunden gemessen und in Label geschrieben werden.
Hier nun meine Fragen:
1.
Ist die Subtraktion von (Endzeit-Startzeit)*100000000 = Millisekunden?
Wenn nein, welcher Multiplikator mus eingesetzt werden?
Bsp.: "Zum Wechsel der Tasten wurden ... ms gebraucht!".
2.
"Endzeit: hh:mm:ss:ms"
"Startzeit: hh:mm:ss:ms"
Die FormatDateTime-Funktion gibt leider nur die Sekunden, nicht aber die Millisekunden zurück. Wer weiß Abhilfe?
Vielen Dank schon mal im Voraus
Kroni - Mo 01.11.04 16:35
Mit welcher Funktion beziehst du Start und Endzeit??
Wenn du das sagst, kann man dir helfen =)
Und den Rest sieht man dann ja später, also die Antwort auf deine zweite Frage, wenn man weiß, mit welcher Funktion du die Start und Endzeit misst. Bzw. wie mithilfe der Funktion die Zeit angezeigt wird.
PS: wenn du die Zeit in Millisekunden messen willst, warum willst du hinterher eine Anzeige machen, die Minuten und auch Stunden anzeigt??
donarac - Mo 01.11.04 17:03
var
dtStart, dtEnde : TDateTime;
...
dtStart := now; {Loslassen der linken MT}
if button = mbRight then dtEnde := now; {Drücken der rechten MT}
donarac - Mo 01.11.04 17:04
PS: wenn du die Zeit in Millisekunden messen willst, warum willst du hinterher eine Anzeige machen, die Minuten und auch Stunden anzeigt??
Sollte nur zur Kontrolle eingeblendet werden.
Kroni - Mo 01.11.04 18:04
so, helf mir mal eben auf die Sprünge.
Soweit ich das gesehen habe, stellt der Vorkommateil die Anzahl der Tage nach dem 30.12.1899 an??
jund der nachkommateil die Stunden oder so??*mich blöd anstell*
Ich persönlich würde einfach Time benutzen.
BenBE - Mo 01.11.04 21:08
Der Nachkommaanteil ist der Teil des vollen Tages, der vergangen ist.
Wenn du also (Trunc(Now * 86400) mod 86400 rechnest, bekommst du die Sekunden seit Mitternacht.
Trunc(1000*Frac(Now*86400)) sind dann die Millisekunden.
donarac - Sa 06.11.04 21:09
Kroni schrieb:
> Ich persönlich würde einfach Time benutzen.
Leider kann man damit nicht rechnen - zumindest nicht in Millisekunden.
BenBE schrieb:
>Wenn du also (Trunc(Now * 86400) mod 86400 rechnest, bekommst du die Sekunden >seit Mitternacht.
Hier kommt immer die Fehlermeldung: Fehler bei Fließkommaoperation!
Oder ich bin zu blöde dafür! :oops:
BenBE - Sa 06.11.04 21:41
Ich hab das bei mir grad nochmal getestet und es funzt ohne Probleme. Schreib mal ein wenig Source von dir. Ich glaub, der Fehler liegt an ner anderen Stelle.
Delete - Sa 06.11.04 21:58
Wie wäre es denn mit
GetTickCount?
Ein Beispiel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Label1: TLabel; procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private public end;
var Form1: TForm1; mmStart, mmDuration: integer;
implementation
{$R *.dfm}
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then mmStart := GettickCount; end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbRight then begin mmDuration := GettickCount - mmStart; label1.Caption := inttostr(mmDuration); end; end;
end. |
Das war doch das, wonach gefragt wurde. Oder?
donarac - Mo 08.11.04 17:56
Danke ELITE! :D
Genau das, was ich wollte! :!:
Der Name ist wohl Programm :wink:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!