Stopuhr mit Delphi...
lima-city → Forum → Programmiersprachen → Delphi & Pascal
auftreten
bedenken
befehl
fenster
hilfe
intervall
label
laufzeit
laut
leiste
millisekunde
minute
pc
rechenleistung
sekunde
stoppuhr
timer
ungenauigkeit
variable
window
-
...oder sonst einer Programmiersprache?
Hi, wir haben grade in Informatik mit Delphi angefangen, und uns f?r den anfang erstmal einen "Taschen"-Rechner gebastelt ;)
Naja, ich bin kompletter anf?nger
K?nntet ihr mir eine Stopuhr Basteln? etwa nach diesem schema:
Zeit: [Feld] - Minuten und sekunden wenn das geht?
daaaaaaaaaaaan...
Zeit die runterl?uft: [Feld] - sekundenweise
Button der blink oder so und am besten noch mit windows ger?usch, wenn die zeit auf null ist...
ich komm damit n?mlich grad gaaaaaaaar nich klar :(
hier wurde sowas schonmal mit html beschrieben, aber ziemlich anders, und es hat nich geklappt..
danke wenn ihrs mal versuchen w?rdet
Matbot
EDIT:
Bei meiner vorstllung als eigenes Fenster..
bis jetzt sind aber alle meine Delphi sachen in eigenen fenstern, is irg klar, oder?
Beitrag ge?ndert am 21.04.2006 19:54 von matbot -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also, das kommt jetzt darauf an, wie genau die Stoppuhr gehen soll. Einfach zu machen, und am ungenausten (Ungenauigkeit irgendwo im Zehntelsekundenbereich, je nach Auslastung von Windows, und nach Prozesspriorit?t) w?re folgendes:
Platziere eine TTimer-Komponente auf deinem Form und ein TLabel.
Bei TTimer gibts du bei der .Interval-Property (glaub ich jetzt auswendig, dass die so hei?t) auf die "Aufl?sung" deines Timers in Millisekunden, und schreibst dann ins OnTimer-Event deinen Code:
was wei? ich: Variable, die die Laufzeit deines Timers beinhaltet, eine Variable mit der verstrichenen Zeit (=Timer-Intervall x Anzahl der Timer-Aufrufe, einfach mitz?hlen), Differenz ist die verbleibende Zeit, die du dann beliebig in Text umwandelst und beim TLabel in die Caption schreibst. Starten tust du denn Timer dann, indem du .Enabled auf True setzt. Im OnTimer-Event mu?t du dann noch folgendes ?berpr?fen: wenn die verbleibende Differenz <= 0 ist, dann setzt du TTimer.Enabled auf False, und der Timer wird gestoppt! Wichtig ist nur KLEINER GLEICH, da sicht (gew?nschte Laufzeit) minus (verstrichene Zeit) nicht genau auf 0 Millisekunden Rest ausgehen wird und der Timer dann ewig weiter laufen w?rde!
H?ffe, das gen?gt, sonst kann ich mich am WE mal dazusetzen, und schnell was coden! Aber dann "entwickelst" du das ja nicht mehr selber! -
wenn man das Interval 1000ms vergibt, wird nur in Sekunden gez?hlt, d.h. Eine Uhr kann bspw. von einer Minute im Sekundentakt r?ckw?rts z?hlen.
Je nachdem, welche Intervalle Du vergibst, wird die Stoppuhr/Timer genauer (100ms f?r zehntel Sekunden; 10ms f?r Hundertstel; 1ms f?r Tausendstel)
Du musst aber bedenken, dass der PC bei Intervallen von 1ms whnsinnige Rechenleistung leisten muss und ?ltere PCs kann das ?berlasten.
Object: TTimer
Code eingeben per Doppelklick auf TTimer.
Es wird dann jedes Mal, wenn Interval abl?uft dieser Code ausgef?hrt. So kannst Du beispielsweise per Label.Caption oder Edit.Text einen Text ausgeben. Vergiss dabei nicht, Zahlen (vielleicht aus Variablen) per IntToStr() bzw FloatToStr() in Strings zu wandeln. -
Laut der Delphi Hilfe wird glaube ich empfholen das Timer Intervall nicht kleiner als 80ms zu nehmen, da sonst Ungenauigkeiten auftreten.
Gru? Tobi
Nicht nur das! Je nachdem, wie lange die Codeausf?hrung des OnTimer-Events n?mlich dauert, kann es zu ?berschneidungen kommen, also: Der erste Aufruf ist noch nicht mal abgeschlossen, und das OnTimer-Event wird schon das zweite Mal aufgerufen!
Bei solchen ?berschneidungen kann es zu Exceptions kommen, da die Threads nicht syncronisiert sind, und sie auf die sleben Variablen zugreifen! -
Ja, das m?sste aber bei einem Befehl noch hinhauen.
Bei
label.caption := IntToStr(Anfang-1)
d?rfte das doch noch gehen, oder? -
Ja, das m?sste aber bei einem Befehl noch hinhauen.
Bei
label.caption := IntToStr(Anfang-1)
d?rfte das doch noch gehen, oder?
Denk ich schon, d?rfte kein Problem sein! Ich meinte das, wenn im OnTimer-Event mehr Code auszuf?hren ist (z.B. irgendwelche gr?beren Auswertungen, und dann das ganze irgendwie noch grafisch darstellen, ...). Da kann oswas problematisch sein. -
Ja, Du hast Recht. Es ist eigentlich grunds?tzlich nicht zu empfehlen Intervalle kleiner als 100 zu nehmen. In den meisten f?llen reicht auch ein Interval von 1000 und gr??er, also spart nicht an Zeit ;O)
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage