![]() |
Re: Verbleibende Zeit anzeigen
Mhmm ... dan schreib halt zeit := zeit - 1; ;)
|
Re: Verbleibende Zeit anzeigen
Ich wäre für eine Endlosschleife (natürlich nur für 60s endlos), Timer sind hässlich :P .
|
Re: Verbleibende Zeit anzeigen
Zitat:
Wem willst du DAMIT die Rechenleistung klauen? :shock: Ein Timer ist imho nicht hässlich. Es ist einfach ein eigener Thread, der in einem voreingestellten Intervall immer das OnTimer-Event auslöst. Prinzipiell kann man es mit einer Schleife machen, aber: Entweder das Programm wird durch die ewige Schleife (und eventuelle Sleeps) ins "Stocken" gebracht (ich weiß grade nicht, wie Delay funktioniert...), oder man ruft immer "Application.ProcessMessages" auf und macht dann alles nur langsamer. Ein Thread ist für sowas imho genau das richtige (in diesem Fall in Form eines Timers) ;) |
Re: Verbleibende Zeit anzeigen
Zitat:
|
Re: Verbleibende Zeit anzeigen
mit GetTickCount bekommt man die Zeit in Millisekunden seit windowsstart.
Bevor du den Timer startest holst du dir also die Zeit und addierst deine spanne dazu.
Delphi-Quellcode:
und im OnTimer ereignis
EndTime := GetTickCount + 6000;
Timer1.Interval := 500; Timer1.Enabled := True;
Delphi-Quellcode:
und ein Timer ist keine Schleife in einem Thread. Das Timer-Event wird von Windows ausgelöst und es wird an die Anwendung eine Message geschickt. Alternativ kann man auch wenn man die Api-Funktion dafür nutzt direkt eine Funktionsadresse angeben so das keine Message geschickt wird...
var LTime: Cardinal;
begin LTime := GetTickCount; if LTime < EndTime then caption := 'verbleibend: ' + inttostr(EndTime - LTime) + ' sekunden' else begin Timer1.Enabled := False; caption := 'fertig'; end; |
Re: Verbleibende Zeit anzeigen
[quote="tail"]
Zitat:
Im Label5 soll einfach nur die Zeit angezeigt werden, bis der Timer abgelaufen ist |
Re: Verbleibende Zeit anzeigen
Delphi-Quellcode:
Procedure SetupTimer;
Begin Timer.Tag := 60; // So oft soll der Timer feuern, bis fettich Timer.Interval := 1000; // 1x pro Sekunde Timer.OnTimer := ShowRemaining; Timer.Enabled := True; End; Procedure TmyForm.ShowRemaining (Sender : TObject); Begin Timer.Tag := Timer.Tag - 1; If Timer.Tag = 0 Then Begin Timer.Enabled := False; // Timer Ausschalten Label2.Caption :='Fettich'; DoWhatever; End Else Label2.Caption := Format('Verbleibende Zeit %d Sekunden',[Timer.Tag]); End; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 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