kostenloser Webspace werbefrei: lima-city


Stopuhr mit Delphi...

lima-cityForumProgrammiersprachenDelphi & Pascal

  1. Autor dieses Themas

    matbot

    Kostenloser Webspace von matbot

    matbot hat kostenlosen Webspace.

    ...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 :slant:
    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    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! :biggrin:
  4. Warum so umst?ndlich?

    Den Timer eifnach das Interval 1000ms geben.

    Startwert definieren in Millisekunden (zum Beispiel 10000ms).

    Dann einfach um OnTimer Ereignis (wenn das so hei?t) :

    GesamtZeit = GesamtZeit - Timer1.Intervall;

    //gefolgt von den Zeitausgaben

    Label1.Caption = GesamtZeit div 60000; //das w?ren die Minuten

    Label2.Caption = GesamtZeit div 1000; //das w?ren die Sekunden

    Musst halt das f?r dich geeignete Ausgabeformat w?hlen.

    Gru? Tobi
  5. 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.
  6. ku-shi schrieb:
    Du musst aber bedenken, dass der PC bei Intervallen von 1ms whnsinnige Rechenleistung leisten muss und ?ltere PCs kann das ?berlasten.


    Laut der Delphi Hilfe wird glaube ich empfholen das Timer Intervall nicht kleiner als 80ms zu nehmen, da sonst Ungenauigkeiten auftreten.

    Gru? Tobi
  7. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.


    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!
  8. Ja, das m?sste aber bei einem Befehl noch hinhauen.
    Bei
    label.caption := IntToStr(Anfang-1)
    d?rfte das doch noch gehen, oder?
  9. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.


    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.
  10. 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)
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!