Autor Beitrag
Daniboy
Hält's aus hier
Beiträge: 11



BeitragVerfasst: So 05.10.08 01:39 
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


Zuletzt bearbeitet von Daniboy am Mo 27.10.08 15:13, insgesamt 1-mal bearbeitet
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: So 05.10.08 01: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...
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 05.10.08 18:02 
Oder den Counter gleich auf 60 und dann subtrahieren, das ist nicht so umständlich ;)
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: So 05.10.08 18: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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
// Der Start des Countdowns - musst du noch an dein Programm anpassen 
procedure TForm1.StartButtonClick(Sender: TObject);
begin
  // Startzeit merken
  StartTime := GetTickCount;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var Diff, CountDown: Cardinal;
begin
  // Differenz zwischen aktueller und gemerkter Zeit berechnen
  Diff := GetTickCount - StartTime;

  // Zeit von 60 (dem Startwert) abziehen)
  CountDown := 60 - Diff;

  // Countdown im Label anzeigen
  Label1.Caption := IntToStr(CountDown);
end;

end;
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 05.10.08 18:42 
ausblenden 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
    { Private-Deklarationen }
    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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: So 05.10.08 18:52 
@DaddyH:

Bei deiner Variante könnten OnTimer-Ereignisse verloren gehen, sollte das System beim Auftreten eines solchen Ereignisses zu stark ausgelastet sein.
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: So 05.10.08 18:53 
user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
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.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 05.10.08 18: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: So 05.10.08 18:58 
user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: So 05.10.08 20:31 
Es gibt Leute die können sich in alles reinsteigern - Warum ?
Der Fragesteller hat doch noch garnicht reagiert !

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: So 05.10.08 23:41 
user profile iconBlackheart666 hat folgendes geschrieben Zum zitierten Posting springen:
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:

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 06.10.08 08:17 
Daniboy Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 06.10.08 15: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