Autor |
Beitrag |
donarac
Hält's aus hier
Beiträge: 14
|
Verfasst: Mo 01.11.04 16:00
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
_________________ nobody is perfect
|
|
Kroni
      
Beiträge: 720
Win 98, Win ME, Win2k, Win XP
D3 Pro
|
Verfasst: 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 
Hält's aus hier
Beiträge: 14
|
Verfasst: 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 
Hält's aus hier
Beiträge: 14
|
Verfasst: 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
      
Beiträge: 720
Win 98, Win ME, Win2k, Win XP
D3 Pro
|
Verfasst: 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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
donarac 
Hält's aus hier
Beiträge: 14
|
Verfasst: 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! 
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Elite
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 06.11.04 21:58
Wie wäre es denn mit GetTickCount?
Ein Beispiel:
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 
Hält's aus hier
Beiträge: 14
|
Verfasst: Mo 08.11.04 17:56
Danke ELITE!
Genau das, was ich wollte!
Der Name ist wohl Programm 
|
|
|