Autor Beitrag
donarac
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 720

Win 98, Win ME, Win2k, Win XP
D3 Pro
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 720

Win 98, Win ME, Win2k, Win XP
D3 Pro
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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



BeitragVerfasst: Sa 06.11.04 21:58 
Wie wäre es denn mit GetTickCount?
Ein Beispiel:
ausblenden volle Höhe 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
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Mo 08.11.04 17:56 
Danke ELITE! :D

Genau das, was ich wollte! :!:

Der Name ist wohl Programm :wink: