![]() |
Stoppuhr
Liste der Anhänge anzeigen (Anzahl: 1)
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) ![]() 2) ![]() 3) ![]() 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 |
Re: Stoppuhr
Du schreibst:
Zitat:
In dem ersten Link schreibt Hagen in Beitrag #15 Zitat:
|
Re: Stoppuhr
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 :D Gruß und Dankeschön im Voraus |
Re: Stoppuhr
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 |
Re: Stoppuhr
Und für die Formatierung...
Delphi-Quellcode:
Nur getippt, ungetestet und sicher nicht der beste Weg :D...
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; |
Re: Stoppuhr
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 |
Re: Stoppuhr
:-D jetzt hab ich die eigentliche Formatierung vergessen ^^:
Delphi-Quellcode:
MfG Darkface
//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; |
Re: Stoppuhr
Hallo,
welchen Typ hast Du denn Startzeit und StoppZeit gegeben? Sie sollten vom Typ Cardinal sein. Grüße Klaus |
Re: Stoppuhr
Liste der Anhänge anzeigen (Anzahl: 1)
Hab dir mal ein kleines Beispiel zusammengestrickt :wink:
[edit]Da hab ich doch glatt den Source vergessen :wall: [7edit] |
Re: Stoppuhr
Liste der Anhänge anzeigen (Anzahl: 1)
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz