Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Verbleibende Zeit anzeigen (https://www.delphipraxis.net/47412-verbleibende-zeit-anzeigen.html)

jfheins 10. Jun 2005 19:52

Re: Verbleibende Zeit anzeigen
 
Mhmm ... dan schreib halt zeit := zeit - 1; ;)

Khabarakh 10. Jun 2005 21:29

Re: Verbleibende Zeit anzeigen
 
Ich wäre für eine Endlosschleife (natürlich nur für 60s endlos), Timer sind hässlich :P .

malo 10. Jun 2005 21:40

Re: Verbleibende Zeit anzeigen
 
Zitat:

Zitat von Khabarakh
Ich wäre für eine Endlosschleife (natürlich nur für 60s endlos), Timer sind hässlich :P .

Endlosschleife? :shock:

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) ;)

tail 10. Jun 2005 21:46

Re: Verbleibende Zeit anzeigen
 
Zitat:

Zitat von urbanbruhin
hi,

du könntest den timer intervall auf 1000 einstellen. dann bei einem label immer so eins minus rechnen:
Delphi-Quellcode:
label1.caption := inttostr(strtoint(label1.caption)-1);
wenn label1.caption = 0, dann wird das ereignis ausgelöst, dass du jede minute haben willst. natürlich musst du label1.caption wieder auf 60 stellen.

gruss
urbanbruhin

Danke, dass habe ich genommen und funktioniert.

SirThornberry 10. Jun 2005 21:53

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:
EndTime := GetTickCount + 6000;
Timer1.Interval := 500;
Timer1.Enabled := True;
und im OnTimer ereignis
Delphi-Quellcode:
var LTime: Cardinal;
begin
  LTime := GetTickCount;
  if LTime < EndTime then
    caption := 'verbleibend: ' + inttostr(EndTime - LTime) + ' sekunden'
  else begin
    Timer1.Enabled := False;
    caption := 'fertig';
  end;
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...

manakinn 21. Jun 2005 16:55

Re: Verbleibende Zeit anzeigen
 
[quote="tail"]
Zitat:

Zitat von urbanbruhin
hi,

du könntest den timer intervall auf 1000 einstellen. dann bei einem label immer so eins minus rechnen:
Delphi-Quellcode:
label1.caption := inttostr(strtoint(label1.caption)-1);
wenn label1.caption = 0, dann wird das ereignis ausgelöst, dass du jede minute haben willst. natürlich musst du label1.caption wieder auf 60 stellen.

gruss
urbanbruhin

Das hab ich auch Probiert, aber anscheint geht das nicht bei Random Timer :(
Im Label5 soll einfach nur die Zeit angezeigt werden, bis der Timer abgelaufen ist

alzaimar 21. Jun 2005 17:05

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.
Seite 2 von 2     12   

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