Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Timer in Schleife verwenden (https://www.delphipraxis.net/35809-timer-schleife-verwenden.html)

Äfan 12. Dez 2004 00:01


Timer in Schleife verwenden
 
Hi,

Also ich weiß net was los ist aber ich bekomme das einfach net hin, irgendwie stell ich mich an:

Was will ich ?
Ich will eine Uhr machen.

So...
Also die aktuallisierung der Uhr soll über eine schleife gehen. Es soll aber nach jedem durchgang eine Sekunde pause gemacht werden. Wie mach ich das ?

MFG

Ultimator 12. Dez 2004 00:02

Re: Timer in Schleife verwenden
 
Benutz doch einen Timer mit Intervall 1000 (ms), dann wird im OnTimer-Event jede Sekunde etwas getan ;-)

Äfan 12. Dez 2004 00:07

Re: Timer in Schleife verwenden
 
Ja nur wie mache ich...

1. Die schleife ?
2. Den Timer aktivieren das er 1 Sekunde wartet ?

Wenn ich nur TTimer1.OnTimer mache will er noch mehr argumente

Ultimator 12. Dez 2004 00:10

Re: Timer in Schleife verwenden
 
Ich versteh nicht ganz, was du mit der Schlaife meinst :-)
Sobald du den Timer auf Active:=true setzt, wird das OnTimer-Event jede Sekunde unabhängig von allen anderen Sachen ausgeführt.

PS: Wenn du Timer1.OnTimer aus einer anderen Prozedur aus aufrufen möchtest, musst du einen Sender angeben, z.B. self oder so.

Äfan 12. Dez 2004 00:14

Re: Timer in Schleife verwenden
 
Geht net: Zugriffsverletzung.

Mach doch mal so ein Ding und Poste den Code :-D

Ultimator 12. Dez 2004 00:18

Re: Timer in Schleife verwenden
 
1 Timer auf der Form; beim mir mit Interval 3000; Active
1 Button auf der Form
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.OnTimer(self);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
ShowMessage('Geht!!!');
end;
Compiliert und funktioniert.

gmarts 12. Dez 2004 00:19

Re: Timer in Schleife verwenden
 
Zitat:

Zitat von Äfan
Mach doch mal so ein Ding und Poste den Code :-D

Poste mal lieber deinen Code, dann gucken wir da mal rein. :)


[edit]Ultimator war schneller][/edit]

Äfan 12. Dez 2004 00:22

Re: Timer in Schleife verwenden
 
Delphi-Quellcode:
procedure TMainForm.Button1Click(Sender: TObject);
Var
  DateTime : TDateTime;
  Uhrzeit : string;
  i : Integer;
begin
  for i := 1 to 5 do begin
  DateTime := Time;
  Uhrzeit := TimeToStr(DateTime);
  StatusBar1.Panels[0].Text := Uhrzeit;
  Timer1.OnTimer(self);
 end;
end;

Duffy 12. Dez 2004 00:24

Re: Timer in Schleife verwenden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
er meint wahrscheinlich sowas wie in der anhängenden Demo.

bye
Claus

gmarts 12. Dez 2004 00:25

Re: Timer in Schleife verwenden
 
Delphi-Quellcode:
  DateTime := Time;
  Uhrzeit := TimeToStr(DateTime);
  StatusBar1.Panels[0].Text := Uhrzeit;

Das packst du jetzt ins OnTimerEreignis und im ButtonEreignis aktvierst du den Timer.

Timer auf ein Interval von 1000ms(besser 500) stellen, damit die Zeitanzeige auch ständig aktualisiert wird.


[Edit]Wenn du Duffys Vorschlag nimmst, dann hast du eine schön übersichtliche Lösung.[/Edit]

Äfan 12. Dez 2004 00:31

Re: Timer in Schleife verwenden
 
Jo Danke, genau so meinte ichs.

PS: Ich habe damit was neues gelernt. Ich wusste nicht das es so geht, sonst wär mir das gleich gekommen.

gmarts 12. Dez 2004 00:33

Re: Timer in Schleife verwenden
 
Zitat:

Zitat von Äfan
, sonst wär mir das gleich gekommen.

:lol:

Äfan 12. Dez 2004 00:34

Re: Timer in Schleife verwenden
 
Ja ok, etwas komisch gesagt :-D

Noch eine frage: Wie kann ich machen das die Uhrzeit gleich von anfang an erscheint und nicht erst nach 1 Sekunde ?

gmarts 12. Dez 2004 00:36

Re: Timer in Schleife verwenden
 
Indem du das Label im FormShow-Ereignis zum ersten mal mit der Uhrzeit beschriftest. Also das was jetzt in deiner TimerProcedure steht auch ins FormShow.

bzw. Kannst du am Anfang das Label mit "Initialisiere temporale Visualisierung" beschriften. Sieht fuchsiger aus. ;)

Äfan 12. Dez 2004 00:40

Re: Timer in Schleife verwenden
 
Ja stimmt. OK Danke. Ihr seit echt die besten der besten hier.

Und sorry für die dummen fragen. Aber ich bin noch anfänger.

SirThornberry 12. Dez 2004 06:54

Re: Timer in Schleife verwenden
 
rufe einfach im OnCreate die TimerProcedure selbst auf
Delphi-Quellcode:
  Timer1Timer(nil);

Äfan 12. Dez 2004 12:36

Re: Timer in Schleife verwenden
 
Zitat:

rufe einfach im OnCreate die TimerProcedure selbst auf
Quellcode: markieren
Timer1Timer(nil);
Jo Danke. :thumb:

supermuckl 12. Dez 2004 12:42

Re: Timer in Schleife verwenden
 
kleine nebenfrage

wird bei jedem OnTimer ereignis eigentlich jedesmal ein thread aufgemacht ?
hab da schonmal probleme gehabt wenn sich das überlappt *g* und das kann ja nur sein, wenns über threading gelöst ist ?!

Dani 12. Dez 2004 12:46

Re: Timer in Schleife verwenden
 
Zitat:

Zitat von supermuckl
kleine nebenfrage

wird bei jedem OnTimer ereignis eigentlich jedesmal ein thread aufgemacht ?
hab da schonmal probleme gehabt wenn sich das überlappt *g* und das kann ja nur sein, wenns über threading gelöst ist ?!

Nö. Ein Timer ist quasi ein unsichtbares Fenster, das im Hauptthread mitläuft (kannst ja mal 5000 Timer erzeugen und dann im Taskmanager die Thread-Zahl prüfen :) )


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:10 Uhr.

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