Entwickler-Ecke

Sonstiges (Delphi) - Timer - nach einer bestimmten Zeit Anweisung ausführen


Avant - So 23.12.07 02:43
Titel: Timer - nach einer bestimmten Zeit Anweisung ausführen
Hallo,

ich möchte, dass nach einer gewissen Zeit Anweisungen ausgeführt werden.


Beispiel:

1. auf Button klicken
2. diese Zeit warten
3. Anweisungen usw.


Ich hatte da schon an den Timer gedacht - lief aber bei mir nich.

Wie könnte ich das hinbekommen?


Danke im Voraus.

Avant


Moderiert von user profile iconjasocul: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am So 23.12.2007 um 11:16


LorenzS - So 23.12.07 02:48

Entweder:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.FormCreate(Sender: TObject);
begin
 timer1.Enabled:=false;//timer Deaktiviern
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 timer1.Interval:=1000;// 1 sekunde.
 timer1.Enabled :=true;//Timer starten
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 timer1.Enabled:=false;//timer Deaktiviern, einmal aufrufen reicht
 //Anweisung
end;

oder

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);
Var zeit:double;
begin
 Zeit:=now+1.0*(1.0/86400.0);//aktuelle zeit plus eine sekunde
 while (now<=Zeit) do Application.processMessages;
 //Anweisung
end;


Avant - Mo 24.12.07 02:27

Danke für die Antwort,

aber das Programm soll nach einer gewissen Zeit die Farbe von einem Object ändern.

Wie kann ich dann mehrere Anweisungen eingeben?

1. klick Button
2. Farbe auf grün
3. 1 Sekunde warten
4. Farbe auf blau
5. 1 sekunde warten
6. Farbe auf grün
7. 1 Sekunde warten
8. Farbe auf blau
usw.

im Prinzip wie bei einem Polizeiblaulicht oder einer Leuchtreklame.


Wie bekommt man das hin?


Narses - Mo 24.12.07 02:31

Moin!

Such mal nach Suche in: Delphi-Forum, Delphi-Library AMPEL, damit solltest du weiter kommen. :idea:

In deiner nächsten Problembeschreibung sollte auch dein Code nicht fehlen, der nicht das tut, was er soll; sonst können wir dir nur schlecht helfen. ;)

cu
Narses


LorenzS - Mo 24.12.07 10:41


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:
//Global
 var Farbstatus:integer;
procedure TForm1.FormCreate(Sender: TObject); 
begin 
 timer1.Enabled:=false;//timer Deaktiviern 
 
end


procedure TForm1.Button1Click(Sender: TObject); 
begin 
 timer1.Interval:=1000;// 1 sekunde. 
 timer1.Enabled :=true;//Timer starten 
 Farbstatus:=1;//1.farbe;
end


procedure TForm1.Timer1Timer(Sender: TObject); 
begin  
 Farbstatus:=3-Farbstatus;//Farbe switch bei jeden timer aufruf von 1 auf 2 und von 2 auf 1;
 //Anweisung
 case Farbstatus of 
  1:begin
     //etwas wird Blau
    end;
  2:begin
     //etwas wird Grün
    end;
 end;
end;


Jerk - Di 25.12.07 22:37


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.FormCreate(Sender: TObject); 
begin 
 timer1.Enabled:=false; // -- Wieso nich per Objectinspector?
 
end


procedure TForm1.Button1Click(Sender: TObject); 
begin 
 timer1.Interval:=1000;// -- Wieso nich per Objectinspector?
 timer1.Enabled :=true;//Timer starten 

end


procedure TForm1.Timer1Timer(Sender: TObject); 
begin  
 if etwas.farbe = blau then etwas.farbe=grün else etwas.farbe=blau
end;


Ist einfacher :p


LorenzS - Di 25.12.07 23:35

wie soll ich dir den object inspectoren denn hier darstellen, nicht jeder erstellst seinen Objecte grafisch


Jerk - Di 25.12.07 23:46

Daran hatte ich garnicht gedacht -.-


Avant - Sa 29.12.07 14:53

Seht euch die angehängten Dateinen (rar. Archiv) mal an.

Nur Doppelblitz und Wechselblitz funktionieren noch nicht ganz.

Bei Doppelblitz sollen beide Seiten zweimal aufblinken und einen kurzen Moment (zwei Takte) dunkel bleiben usw.

Bei Wechselblitz soll abwechselnd eine Seite zweimal blinken und solange dunkel sein, bis die andere Seite zweimal geblinkt hat.


Tipps (oder auch verbesserte Versionen) nehme ich gerne an.


Guten Rutsch

Avant


Avant - Do 07.02.08 09:26

Habs hinbekommen !!!

Also manchmal steh ich echt auf dem Kabel ^^

Hab einfach bei Timer eingegeben:

Farbstatus:=Farbstatus+1;
If Farbstatus=7 then begin Farbstatus:=1 end;


Trotzdem Danke an alle!