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 Countdown (https://www.delphipraxis.net/29663-countdown.html)

jfheins 12. Sep 2004 20:03


Countdown
 
Ich möchte einen Countdown realisieren.

Angezeigt werden immer Minuten un Sekunden im Format mm:ss, z.B. 02:30. (Schöner wäre natürlich 2:30. Aber wie ?)

Bisher habe ich folgende Lösung:
Delphi-Quellcode:
rocedure TForm1.Timer1Timer(Sender: TObject);
var
 min, sec: Byte;
 smin, ssec: string;
begin
 min := strtoint (copy (Label3.Caption, 1, 2));
 sec := strtoint (copy (Label3.Caption, 4, 2));
 if not ((sec = 0) AND (min = 0)) then
 begin
  if sec = 0 then
  begin
   dec (min);
   sec := 59;
  end
  else dec (sec);
  smin := inttostr (min); ssec := inttostr (sec);
  if length (smin) = 1 then smin := '0' + smin;
  if length (ssec) = 1 then ssec := '0' + ssec;
  Label3.Caption := smin + ':' + ssec;
 end;
end;
Das funktioniert zwar, doch mich dünkt, dass es auch eleganter geht.
Timer-intervall natürlich auf 1000.

Jelly 12. Sep 2004 20:13

Re: Countdown
 
Warum setzt du denn deine Countdownzeit in ein Label und nicht in eine Variable vom DatenType TTime. Damit sparst du dir das unübersichtliche Auseinanderpflücken und Zusammenfriemeln des Labels.

Gruß,

Nothine 12. Sep 2004 20:28

Re: Countdown
 
wenn du es schaffst (soll auch leute geben die es nich schaffen :roll:) einen gültigen TTime-Wert in bspw. Edit1 reinzuschreiben, kannst du auch einfach den hier machen:
Delphi-Quellcode:
var TimeTill: TTime; //globale Countdown-Variable

...

begin
  TimeTill := Time + StrToTime(Edit1.Text); //initialisieren bitte
  Timer1.Enabled := True; //jetz kanns losgehen
end;

...

procedure Timer1.Timer(Sender: TObject);
begin
  if TimeTill > Time then //solang der Countdown läuft
    Label3.Caption := FormatDateTime('m":"ss',Time-TimeTill); //macht Delphi ganz komfortabel was du willst
  else Timer1.Enabled := False; //und wenn ende is is ende
end;
is ungetestet, sollte aber laufen, sowas sollte ich eigentlich auch um halb 10 noch hinkriegen :stupid: :mrgreen:

Sharky 12. Sep 2004 20:31

Re: Countdown
 
Hier meine Lösung:

Delphi-Quellcode:
var
  startzeit : TTime;
  countdown   : TTime;

procedure TForm1.Button1Click(Sender: TObject);
var
  stunden : Integer;
  minuten : Integer;
  sekunden : Integer;
begin
  stunden := 0;
  minuten := 2;
  sekunden := 30;
  countdown := EncodeTime (stunden,minuten,sekunden,0);
  startzeit := Now;
  Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  jetzt : TTime
begin
  jetzt := countdown + (startzeit-now);
  if (jetzt > 0 ) then
    Label1.Caption := FormatDateTime ('nn:ss',jetzt)
  else
    Label1.Caption := '00:00';
  Application.ProcessMessages;
end;

jfheins 12. Sep 2004 20:52

Re: Countdown
 
Hmmm :?

Kann mwn von einem TTime-Wert eine Sekunde abziehen ?

Nothine 12. Sep 2004 20:57

Re: Countdown
 
klar, wieso denn nicht...
Delphi-Quellcode:
  TimeWert := TimeWert - StrToTime('00:00:01');

Jelly 12. Sep 2004 20:57

Re: Countdown
 
ja,
mit
Delphi-Quellcode:
var
 T : TDateTime ;
begin
  T := T - EncodeTime (0,0,1,0) ;
end ;

Sharky 12. Sep 2004 20:58

Re: Countdown
 
Zitat:

Zitat von jfheins
..Kann mwn von einem TTime-Wert eine Sekunde abziehen ?

Ja ;-)

Einfach
Delphi-Quellcode:
begin
  zeit := zeit - (EncodeTime (0,0,1,0));
end;

sakura 12. Sep 2004 20:58

Re: Countdown
 
Zitat:

Zitat von Sharky
Einfach

Einfacher (imho) :mrgreen:
Delphi-Quellcode:
begin
  zeit := zeit - 1/24/60/60;
end;
...:cat:...

Jelly 12. Sep 2004 21:01

Re: Countdown
 
Zitat:

Zitat von sakura
Einfacher (imho) :mrgreen:
Delphi-Quellcode:
begin
  zeit := zeit - 1/24/60/60;
end;
...:cat:...

Und wie würdest du da rangehen, wenn du statt einer Sekunde, z.B. 2 Stunden, 37 Minuten, 13 Sekunden abziehen willst... Da ist mir EncodeDate doch übersichtlicher :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:21 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz