Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Verbleibene Sekunden in einem Label anzeigen
Daniboy - So 05.10.08 00:39
Titel: Verbleibene Sekunden in einem Label anzeigen
hallo!
mein timer zählt von 60.000 runter (eine minute).
nun möchte ich in einem label die verbleibenden sekunden anzeigen, also 60,59,58...
ist dies möglich?
mfg Daniboy
platzwart - So 05.10.08 00:57
logisch!
stell deinen timer auf 1000. dann zählst du einen counter um 1 hoch (bei 60 soll er dann ja nicht mehr weitermachen) und gib z.b. in einem label 60-counter aus...
Delete - So 05.10.08 17:02
Oder den Counter gleich auf 60 und dann subtrahieren, das ist nicht so umständlich ;)
Yogu - So 05.10.08 17:17
Dann kommst du bei 50 bis 70 Sekunden raus. :?
Besser, du merkst dir die aktuelle Zeit beim Start (
GetTickCount), und ziehst sie im Timer-Event immer von der aktuellen Zeit ab. Das ist die verstrichene Zeit, die du noch von 60 subtrahieren musst, um die Restzeit zu bekommen.
In Delphi übersetzt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.StartButtonClick(Sender: TObject); begin StartTime := GetTickCount; end;
procedure TForm1.Timer1Timer(Sender: TObject); var Diff, CountDown: Cardinal; begin Diff := GetTickCount - StartTime;
CountDown := 60 - Diff;
Label1.Caption := IntToStr(CountDown); end; |
end;
Delete - So 05.10.08 17:42
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| type TFormBla = class(TForm) ... private FCounter: Integer; ... end;
procedure TFormBla.FormCreate(Sender: TObject); begin FCounter := 60; end;
procedure TFormBla.Timer1Timer(Sender: TObject); begin Dec(FCounter); Label1.Caption := IntToStr(FCounter); Timer1.Enabled := FCounter > 0; end; |
Wo ist da jetzt das Problem?
platzwart - So 05.10.08 17:52
@DaddyH:
Bei deiner Variante könnten OnTimer-Ereignisse verloren gehen, sollte das System beim Auftreten eines solchen Ereignisses zu stark ausgelastet sein.
Yogu - So 05.10.08 17:53
DeddyH hat folgendes geschrieben : |
| Wo ist da jetzt das Problem? |
Das Problem ist, dass du jetzt immer nach
mindestens einer Sekunde den Counter herunterzählst. Wenn die CPU ausgelastet ist oder etwas anderes passiert, kann sich der Abstand auch mal vergrößern. Außerdem ist der Windows-Timer sehr ungenau.
Delete - So 05.10.08 17:55
Wenn es so auf Genauigkeit ankommt, kann man ja auch einen Multimedia-Timer verwenden. Allerdings glaub ich nicht, dass das hier nötig ist, scheint ja mehr eine Hausaufgabe o.ä. zu sein.
Yogu - So 05.10.08 17:58
DeddyH hat folgendes geschrieben : |
| scheint ja mehr eine Hausaufgabe o.ä. zu sein. |
Gerade da sollte ja verlangt werden, dass man einen sauberen Quelltext abliefert. Und da ist nun einmal nicht, Variablen in Timern herunterzuzählen.
Blackheart666 - So 05.10.08 19:31
Es gibt Leute die können sich in alles reinsteigern - Warum ?
Der Fragesteller hat doch noch garnicht reagiert !
Hidden - So 05.10.08 22:41
Blackheart666 hat folgendes geschrieben : |
Es gibt Leute die können sich in alles reinsteigern - Warum ?
Der Fragesteller hat doch noch garnicht reagiert ! |
Langsam, langsam ;) 'Was schlimmeres als lernen kann nicht passieren :zwinker:
Daniboy - Mo 06.10.08 14:39
hey...erst einmal vielen dank für die vielen Antworten!
ich bin delphi-anfänger und habe deshalb so eine einfache frage gestellt, die ich persönlich doch ziemlich schwierig fand.
aber hab es ja jezt hinbekommen..danke nochma x)
mfg Daniel
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!