Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Timer.Interval in Minuten ablaufend anzeigen (https://www.delphipraxis.net/50253-timer-interval-minuten-ablaufend-anzeigen.html)

Kompon Ente 22. Jul 2005 14:52


Timer.Interval in Minuten ablaufend anzeigen
 
Hallo,

ich möchte, dass in einer Label.Caption die Minuten stehen wie lange es noch dauert, bis das OnTimer-Event ausgelöst wird.

Also, dass ich die Millisekunden * 60 nehmen muss weiß ich schon :D

Wie kann ich die Minuten ablaufend darstellen?

jfheins 22. Jul 2005 14:54

Re: Timer.Interval in Minuten ablaufend anzeigen
 
Indem du dein Timer-Intervall nicht af 10 min. stellst, sondern auf eine, und dann aber erst beim 10. mal etwas auslöst ;)

Kompon Ente 22. Jul 2005 14:55

:wiejetzt:

Hast du verstanden, was ich machen will?

BlackJack 22. Jul 2005 15:00

Re: Timer.Interval in Minuten ablaufend anzeigen
 
nimm lieber 2 timer. mit einem timermisst du die eigentliche zeit, mit dem 2. zeigst du die noch verbleibende zeit z.b. jede sekunde in dem label an. die zeit musst du dann eben über gettickcount oder so errechnen.

ach ja:
Zitat:

Also, dass ich die Millisekunden * 60 nehmen muss weiß ich schon Very Happy
wenn du minuten und nicht "Milliminuten" haben willst solltest du noch mit 1000 multiplizieren ;)

shmia 22. Jul 2005 15:38

Re: Timer.Interval in Minuten ablaufend anzeigen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Kompon ente!!!

Hast du mein Demoprojekt Periodic Action heruntergeladen?????
Hast du das Projekt angeschaut ?
Also nochmals das Projekt mit RESTZEITANZEIGE.

jfheins 22. Jul 2005 18:13

Zitat:

Zitat von Kompon Ente
:wiejetzt:

Hast du verstanden, was ich machen will?

Ja, ich denke schon.

Mein Verfahren - und bestimmt auch das von shmia - ist einfach, den Timeintervall bspw. auf eine Minute zu setzen, und eine globale Variable z.B. auf 10. Dann schreibst du in der OnTimer-Prozedur sowas wie
Delphi-Quellcode:
dec (Zaehler);
if zaehler = 0 then
begin
  Timer.Enabled := False;
  showmessage ('Tadaaaa - 10 min. sind um !!!');
end
else
  showmessage ('noch genau' + zaehler + ' MInuten bis zur großen Überrachung !!!');
so in etwa - da sind natürlich noch Fehler drin ...

Und diese Methode ist viiiiel besser als ein zweiter Timer ;)

Kidix 22. Jul 2005 18:29

Re: Timer.Interval in Minuten ablaufend anzeigen
 
2 Edit Komponenten

- ins erste Edit 10 reinschreiben
- ins zweite 0 reinschreiben

1 Timer Komponente

- Interval auf 1000
- Active := True

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
h,m : integer;
begin

 h := strtoint(Edit1.Text);
 m := strtoint(Edit2.Text);
    if m = 0 then
    begin
    dec(h);
        if (h < 0) and (m = 0) then
        begin
         
           Timer1.Enabled := false;
           ShowMEssage('Ende');
         
        end;
     m := 60;
     end;
 dec(m);
 Edit1.Text := inttostr(h);
 Edit2.Text := inttostr(m);
end;
Code müsste stimmen, überprüft das aber lieber nochmal!

BlackJack 22. Jul 2005 18:57

Zitat:

Zitat von jfheins
Und diese Methode ist viiiiel besser als ein zweiter Timer ;)

nicht wenn du die 10 minuten sehr sehr genau einhalten möchtest; sagen wir wir haben eine fortschrittsanzeige, die jede sekunde aktualisiert werden soll, und der Timer soll 10 Minuten laufen. dann müsste der Timer 10*60 = 600 mal mit einem Intervall von einer Sekunde aufgerufen werden, bis die 10 Minuten um sind. und da der timer garantiert nicht haargenau jede sekunde aufgerufen wird, summiert sich da bei 600 aufrufen unter umständen eine ganz schöne zeitdifferenz zusammen.

klar hat man diese zeitdifferenz auch, wenn man einen einzelnen timer 10 minuten laufen lässt, die ist aber um ein vielfaches kleiner, da man nur einen Timeraufruf statt 600 hat.

SirThornberry 22. Jul 2005 19:10

Re: Timer.Interval in Minuten ablaufend anzeigen
 
@BlackJack: Bei dem Timer summiert sich da nix. Wenn du mal einen Timer auf 10 Sekunden gesetzt hast und dann einen Haltepunkt gesetzt hast, wirst du mitbekommen das beim neu lauslofen das Timerevent nachgeholt wird.
Das liegt daran das der Timer durch eine Windowmessage ausgelöst wird. Wenn das Programm jetzt mit irgendetwas beschäftigt ist oder gerade anhält landen trotzdem die Timer-messages in der Nachrichtenschleife und werden dann wenn das programm wieder reagiert abgearbeitet.

zu Abweischungen würde es nur kommen wenn der Timer immer wieder angehalten wird, ansonsten nicht.

jfheins 22. Jul 2005 19:10

Re: Timer.Interval in Minuten ablaufend anzeigen
 
Diese eventuelle "Aufummierung" (von vieleicht ein paar Millisekunden - kommt, wenn überhaupt, auf das Intervall an) ist aber vernachlässigbar, ich würde sagen, es ist erstmal einfacher mit einem Timer, und es können nicht Sachen wie z.B. "noch -1 Minute" entstehen, wenn die timer nicht synchron arbeiten ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 Uhr.
Seite 1 von 2  1 2      

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