AGB  ·  Datenschutz  ·  Impressum  







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

Stoppuhr

Ein Thema von arest · begonnen am 2. Jan 2009 · letzter Beitrag vom 2. Jan 2009
Antwort Antwort
Seite 1 von 2  1 2      
arest

Registriert seit: 27. Sep 2005
Ort: Frankfurt
62 Beiträge
 
Delphi 6 Personal
 
#1

Stoppuhr

  Alt 2. Jan 2009, 13:28
Hallo allerseits,

bin jetzt schon den halben Tag hier in der DP am suchen, werde aber irgendwie nicht so 100%ig fündig, was mein konkretes Problem anbelangt. Bin nicht besonders fitt in delphi und in sofern bitte ich um "Verständnis". Mein Anliegen, wie schon der Titel besagt, ist es eine Stoppuhr zu programmieren. So simpel, wie es wohl simpler kaum geht... Es gibt einen Button der gleichzeitig Start-/Stopfunktion übernimmt und einen zweiten Button, der die Zeit wieder zurücksetzen soll. Für mich wichitg ist vor allem die präzise Bestimmung der Zeit im Millisekundenbereich (daher auch mein nicht wirkliches fündig werden). Eine weitere "Bedingung" wäre, dass das Format durchgehend im MM:SS:MSMS format angegeben wird. Sprich 00:00:00!

Beispiele zu denen ich gekommen bin, die mir aber nicht wirklich weiter geholfen haben:

1) Beispiel 1
2) Beispiel 2 Für mich leider viel zu komplex
3) Beilspiel 3 Krieg meine Stoppuhrprogrammierung nicht mit den hier genannten "Ideen" kombiniert

Entschuldigt, dass ich ein so unfähiger Rookie bin, aber ich bin sicher, ihr könnt meinem Problem Abhilfe schaffen! Anbei noch ein Bild um meine Ausgangssituation zu demonstrieren.

MfG
Miniaturansicht angehängter Grafiken
stoppuhr_928.jpg  
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#2

Re: Stoppuhr

  Alt 2. Jan 2009, 15:54
Du schreibst:
Zitat:
...Es gibt einen Button der gleichzeitig Start-/Stopfunktion übernimmt...Für mich wichtig ist vor allem die präzise Bestimmung der Zeit im Millisekundenbereich
Diese Anforderungen schließen sich (aus meiner Sicht) gegenseitig aus. Wenn mittels Button die Zeitmessung gestartet bzw. gestoppt wird, ist das Reaktionsvermögen des Bedieners mit Sicherheit nicht im Millisekundenbereich - zumindest bei mir nicht.

In dem ersten Link schreibt Hagen in Beitrag #15
Zitat:
Ergo: gehe ich pragmatisch vor, GetTickCount(), und mehr geht nicht
Auch wenn das jetzt ein wenig aus dem Zusammenhang gerissen ist, unter den genannten Rahmenbedingngen halte ich die Verwendung von GetTickCount() für situationsgerecht und ausreichend.
Ralph
  Mit Zitat antworten Zitat
arest

Registriert seit: 27. Sep 2005
Ort: Frankfurt
62 Beiträge
 
Delphi 6 Personal
 
#3

Re: Stoppuhr

  Alt 2. Jan 2009, 17:18
Ich denke logisch ist eigentlich, dass man über eine ganz einfache Abfrage (wenn zeit läuft ist a=0 und wenn nicht läuft dann a=1) sicherstellen kann, dass die zeit gestartet bzw. gestoppt wird. Natürlich hat kaum ein Mensch die Reaktionsgeschwindigkeit im Millisekundenbereich zu reagieren, natürlich kann er aber nach z.b. 01:24:32 verstrichener Zeit auf seine Stoppuhr "schlagen" (ich löse die Zeit mittels KeyPress auf Leertaste aus) und somit eine präzise Zeitangabe für benötigte Zeit erhalten!
Bezüglich des GetTickCount(): natürlich wäre mir diese Funktion präzise genug, jedoch sehe ich mich nicht im Stande alleine eine solche Programmierung zu tätigen! S.O. ich bin ein Rookie und für mich ist es schwer den Code so zu schreiben, dass über genannte Funktion die Zeit ausgegeben wird und gleichzeitig auch noch im angegebenen Format (00:00:00) dargestellt werden kann. Ich wäre somit also für jegliche weitere Anregungen offen!
Am besten, einer postet flott nen fertigen Quellcode

Gruß und Dankeschön im Voraus
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Stoppuhr

  Alt 2. Jan 2009, 18:20
Hallo,

so schwer wie Du dir das vorstellst ist es nicht.

Beim Starten der Uhr:

startWert := GetTickCount;

Beim Stoppen der Uhr:
stopWert := GetTickCount;

verbratenenZeit := stopWert - startWert;

Dann mußt Du nur noch die ms in Minuten und Sekunden umrechnen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Darkface

Registriert seit: 18. Apr 2008
89 Beiträge
 
Delphi XE Professional
 
#5

Re: Stoppuhr

  Alt 2. Jan 2009, 19:29
Und für die Formatierung...

Delphi-Quellcode:
var startWert,stopWert,verbratenenZeit,millisekunden,sekunden,minuten,stunden:integer;

startWert := GetTickCount;
stopWert := GetTickCount;
verbratenenZeit := stopWert - startWert;

millisekunden:=0;sekunden:=0;minuten:=0;stunden:=0;

While verbratenenZeit > 0 do begin
  millisekunden:=millisekunden + 1;

  If millisekunden = 1000 Then
  begin
    millisekunden:=0;
    sekunden:=sekunden+1;
  end;

  If sekunden = 60 Then
  begin
    sekunden:=0;
    minuten:=minuten+1;
  end;

  If minuten = 60 Then
  begin
    minuten:=0;
    stunden:=stunden+1;
  end;

  dec(verbratenenZeit);
end;
Nur getippt, ungetestet und sicher nicht der beste Weg ...
Alexander
Ich halte Ordnung.
Zum Beispiel mein Schreibtisch: Hier ist alles zeitlich geordnet - was zuletzt kam, liegt oben. (Frank Erhoff)
  Mit Zitat antworten Zitat
arest

Registriert seit: 27. Sep 2005
Ort: Frankfurt
62 Beiträge
 
Delphi 6 Personal
 
#6

Re: Stoppuhr

  Alt 2. Jan 2009, 19:33
auf diese methode bin ich auch an die sache rangegangen, jedoch kommen bei mir am laufenden band negative zahlen raus! (JA ich habe wirklich stopp-wert - start-wert gerechnet) und ausserdem entspricht dies in keinster weise einem möglichen reelen ergebnis! -1316470 ist das ergebins, was also 1316470 ms entsrpäche und somit 1316,470 sekunden wären?! richtig? ich habe allerdings nur 2-3 sekunden laufen lassen! besteht da irgend ein zusammenhang?

*EDIT*sorry, post war vor antwort von darkface
  Mit Zitat antworten Zitat
Darkface

Registriert seit: 18. Apr 2008
89 Beiträge
 
Delphi XE Professional
 
#7

Re: Stoppuhr

  Alt 2. Jan 2009, 19:39
jetzt hab ich die eigentliche Formatierung vergessen ^^:

Delphi-Quellcode:
//brauchen wir noch 4 variablen mehr :)
var mil,sek,min,stu:string;
begin
[...]

If millisekunden < 1000 Then begin
  If millisekunden < 10 Then mil:='000' +IntToStr(millisekunden) Else
  If millisekunden < 100 Then mil:='00' +IntToStr(millisekunden) Else
  mil:='0' +IntToStr(millisekunden);
end;

If sekunden < 10 Then sek:='0' +IntToStr(sekunden);
end;

If minuten < 10 Then min:='0' +IntToStr(minuten);
end;

If stunden < 10 Then stu:='0' +IntToStr(stunden);
end;

Label1.Caption:=stu+':'+min+':'+sek+':'+mil;
MfG Darkface
Alexander
Ich halte Ordnung.
Zum Beispiel mein Schreibtisch: Hier ist alles zeitlich geordnet - was zuletzt kam, liegt oben. (Frank Erhoff)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Stoppuhr

  Alt 2. Jan 2009, 19:41
Hallo,

welchen Typ hast Du denn Startzeit und StoppZeit gegeben?
Sie sollten vom Typ Cardinal sein.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Stoppuhr

  Alt 2. Jan 2009, 20:48
Hab dir mal ein kleines Beispiel zusammengestrickt

[edit]Da hab ich doch glatt den Source vergessen [7edit]
Angehängte Dateien
Dateityp: zip stoppuhr_115.zip (211,8 KB, 112x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von lincore
lincore

Registriert seit: 27. Dez 2008
Ort: Bad Segeberg
26 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Stoppuhr

  Alt 2. Jan 2009, 21:16
Und weils so schön ist gleich noch ein Beispiel.
Der Unterschied zu obigem Beitrag ist, dass ich eine TTimer Komponente benutzt habe, um das Label regelmäßig neu zu zeichnen.
Angehängte Dateien
Dateityp: zip stopwatch_956.zip (259,2 KB, 165x aufgerufen)
Wenn Stallman eines Tages mit Zornesröte im Gesicht und blutverschmierter Klinge vor deiner Tür steht, behaupte nicht ich hätte dich nicht gewarnt.
  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 17:42 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