Autor Beitrag
einfach112
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 168

xp
del7
BeitragVerfasst: Di 08.02.05 00:41 
Halli Hallo !
Ich bin mal wieder dabei ein kleines programm zu schreiben !
Mein Problem ist diesmal folgendes....
ich habe ca. 5-6 timer auf meiner form sitzen und einer dieser timer läuft ganz genau : 28800000 was um es genau zu sagen auf stoltze 8 Stunden bringt....
nach diesen 8 Stunden wird auf meinem PC eine Aktion durchgeführt !
da ich aber nicht immer den ganzen tag vor dem PC sitze mit einer Stoppuhr wollte ich mir nun eine Art countdown machen der halt startet sobald der timer auch aktiv ist. also so nach dem Motto :
Nächste Aktion beginnt in ca : 07:56:15 und dann halt jede sekunde eine sekunde weniger bis halt dann auf 00:00:00 bis halt die zeit erreicht wird
Ich habe schon in 3 Foren nach counter und countdown und timer und sonst allem gesucht ! aber leider fand ich nirgendwo eine einfache lösung für mein Problem....
Ist es nicht möglich irgendwie die Restzeit des Aktuell laufenden timers einfach jede sekunde neu in ein Label zu schreiben !?
Wenn doch hat da jemand nähere Infos zu wie man das machen könnte bzw. kann
oder hat sonst noch jemand eine einfache und schnell Idee dazu ?!


Bin wie immer über jede idee und Antwort dankbar !
Mfg
Einfach112

_________________
sorry bin noob !
einfach112 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 168

xp
del7
BeitragVerfasst: Di 08.02.05 00:58 
Titel: schon gefunden....
also auf die schnelle habe ich das mal so gelöst :
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Timer1Timer(Sender: TObject);
var
ablaufzeit : integer;
restzeit : integer;
begin
ablaufzeit := strtoint(label1.caption);
restzeit := ablaufzeit-1;
label1.caption:=inttostr(restzeit);
if ablaufzeit < 1 then
label1.Caption:='10';
 end;


naja hoffe das macht mir auf die schnelle keine probleme !
MfG
Einfach112

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt

_________________
sorry bin noob !
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 08.02.05 01:04 
einfach112 hat folgendes geschrieben:
Ist es nicht möglich irgendwie die Restzeit des Aktuell laufenden timers einfach jede sekunde neu in ein Label zu schreiben !?
Wenn doch hat da jemand nähere Infos zu wie man das machen könnte bzw. kann
oder hat sonst noch jemand eine einfache und schnell Idee dazu ?!

Das Problem ist zwar etwas außergewöhnlich und wird meist nicht über Timer realisiert, aber:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var
  NextTimer:DWORD;//Reicht für 49,7 Tage, wenn Windows nicht bereits vorher abstürzt

procedure TForm1.Dein8StundenTimer(Sender:TObject);
begin
//DoSomething

  NextTimer := GetTickCount + DWORD(TTimer(Sender).Intervall);
end;

procedure TForm1.DeinUpdateTimer(Sender:TObject);
begin
    Label1.Caption := IntToStr(NextTimer - GetTickCount) + 'ms verbleibend!';
end;

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Socher
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 45

warmes flüssiges Blut
D7 Prof, D8 Prof
BeitragVerfasst: Di 08.02.05 03:10 
Titel: Ein Time mit n Stopuhren
Vieleicht noch eine Alternative die auch die verbleibenden Tage berücksichtigt.

Ein ausbaubares Beispiel das mit einem Timer für beliebig viele Stopuhren auskommt.
Der Timer dient nur der Aktualisierung der Daten zur Anzeige.
Je nach dem wie genau mas es mag.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    BitBtn1: TBitBtn;
    LabelRestZeit1: TLabel;
    LabelStartZeit: TLabel;
    LabelZielZeit: TLabel;
    procedure BitBtn1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  DTime:array[1..5,1..2of double;
  DTimeSet:array[1..5of boolean;
implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Dtime[1,1]:=date+time;
LabelStartZeit.Caption:='Startzeit '+datetimetostr(DTime[1,1]);
DTime[1,2]:=date+time+1/3// + 8h = 1/3 Tag
LabelZielZeit.Caption:='Zielzeit '+datetimetostr(DTime[1,2]);
DTimeSet[1]:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var d:word;
begin
if DTimeSet[1then
  begin
  d:=trunc(Dtime[1,2])-trunc(date);
  Form1.LabelRestZeit1.caption:='Restzeit '+inttostr(d)+' Tage und '+timetostr(Dtime[1,2]-(date+time));
  end;
end;

end.


Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.

_________________
FREIHEIT