AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zeit messen

Ein Thema von delphi-projekt · begonnen am 7. Mär 2009 · letzter Beitrag vom 7. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
delphi-projekt
(Gast)

n/a Beiträge
 
#1

Zeit messen

  Alt 7. Mär 2009, 16:02
Hallo,

wie kann ich mit einer ganz einfachen Prozedur messen, wie lange ein Button gedrückt worden ist?

Kann mir jemand dazu ne kurze Anleitung mit Quelltext nennen?

LG
  Mit Zitat antworten Zitat
blink182

Registriert seit: 19. Jun 2007
126 Beiträge
 
Delphi 5 Standard
 
#2

Re: Zeit messen

  Alt 7. Mär 2009, 16:10
hi

im MouseDown vom button in einer globalen variable die zeit speichern und dann im MouseUp die differenz bilden, dann hast du die millisekunden

Delphi-Quellcode:
var zeit:integer;

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 zeit:=GetTickCount;
end;

procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 showmessage(inttostr(GetTickCount-zeit));
end;
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.586 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Zeit messen

  Alt 7. Mär 2009, 16:10
In OnMouseDown den Wert von GetTickCount in einer Cardinalvariable merken, Tag des Buttons ginge auch, dann in OnMouseUp die Differenz ausrechnen.

Alternativ (genauer) ginge es mit QueryPerformanceCounter.

// EDIT:
Stattvar zeit:integer; lieber
Delphi-Quellcode:
var
  zeit: Cardinal;
Und noch besser gar nicht als globale Variable sondern z.B. als Feld im Formular.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Whatever

Registriert seit: 7. Jan 2009
Ort: 127.0.0.1
102 Beiträge
 
#4

Re: Zeit messen

  Alt 7. Mär 2009, 16:11
Das ist nicht allzuschwer also gibts au kein Codebeispiel
Ich würd dir GetTickCout empfehlen.
Im MouseDowm speicherste den aktuellen TickCount in eine Variable. Im MouseUp erneuet. Dann errechnest du die Differenz.

mfg Whatever
  Mit Zitat antworten Zitat
Micha88
(Gast)

n/a Beiträge
 
#5

Re: Zeit messen

  Alt 7. Mär 2009, 16:14
Ich habe mal vor einiger Zeit folgendes in einem Forum gefunden, nicht allzu gut aber für jemanden der nur Timer und wenige Datentypen kennt das richtige

(Ist halt nur nicht auf die Millisekunde genau ..)
Angehängte Dateien
Dateityp: zip ex_183.zip (4,2 KB, 20x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.586 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Zeit messen

  Alt 7. Mär 2009, 16:16
Zitat von MichaelLinden:
Ich habe mal vor einiger Zeit folgendes in einem Forum gefunden, nicht allzu gut aber für jemanden der nur Timer und wenige Datentypen kennt das richtige

(Ist halt nur nicht auf die Millisekunde genau ..)
Das dürfte so ziemlich die ungenaueste und unsauberste Variante sein, die es gibt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#7

Re: Zeit messen

  Alt 7. Mär 2009, 16:18
GetTickCount löst aber nur etwa 10ms-genau auf, ist die procedure schneller benötigt man QueryPerformanceCounter...da hab ich das mal implementiert: http://www.delphipraxis.net/internal...=998390#998390

TTimer wird imho auch angehalten, wenn z.b. das Formular verschoben wird...

Gruß Frank
  Mit Zitat antworten Zitat
Whatever

Registriert seit: 7. Jan 2009
Ort: 127.0.0.1
102 Beiträge
 
#8

Re: Zeit messen

  Alt 7. Mär 2009, 16:21
Ja einmal stoppt er kurz und desweiteren hab ich mal irgendwo gelesen das der Timer nur auf ca. 40ms genau ist...
  Mit Zitat antworten Zitat
delphi-projekt
(Gast)

n/a Beiträge
 
#9

Re: Zeit messen

  Alt 7. Mär 2009, 16:26
Danke für die schnellen Antworten.

Eine Frage habe ich noch: Warum streicht es mir den Befehl Button1MouseDown immer rot an?
Ich habe doch einen Button1
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.586 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Zeit messen

  Alt 7. Mär 2009, 16:27
Zitat von Whatever:
Ja einmal stoppt er kurz und desweiteren hab ich mal irgendwo gelesen das der Timer nur auf ca. 40ms genau ist...
Ein Timer ist so oder so ungenau, egal mit welchem Intervall. Ein Timer ist aber auch gar nicht dafür gedacht genau zu sein. Schließlich passiert die Zeitmessung (eigentlich ) unabhängig davon.

Zitat von delphi-projekt:
Eine Frage habe ich noch: Warum streicht es mir den Befehl Button1MouseDown immer rot an?
Ich habe doch einen Button1
Kann es sein, dass du das nicht unter Ereignisse beim Button eingetragen sondern einfach kopiert hast?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz