Autor Beitrag
Arctics
Hält's aus hier
Beiträge: 13

xp
Delphi7
BeitragVerfasst: Di 21.11.06 22:58 
Ich hab nun außreichent danach gesucht, hab aber nichts gefunden was mir weiterhelfen könnte.

Das Problem ist:
ich will in einem ganz normalen label eine uhr einbauen

ich habs auch versucht, aber hier passiert erst ne ganz zeit gar nichts und dann wird die uhrzeit angezeit, aber nicht sekündlich aktuallisiert
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);

var w:real;
begin
repeat
w:=w+1;

Label1.Caption := FormatDateTime('hh:nn:ss', now);

until w=200001;
end;


Moderiert von user profile iconraziel: Quote- durch Delphi-Tags ersetzt
Ironwulf
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: Di 21.11.06 23:03 
omg ;D
nimm nen timer anstatt nen button
Danny87
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 688

Windows 10 Pro 64bit
Sprachen: HTML, PHP, JavaScript, Delphi || IDE: RAD Studio 10.1 Berlin Starter, WeBuilder
BeitragVerfasst: Di 21.11.06 23:03 
Warum machst du nicht einfach nen Timer mit
ausblenden Delphi-Quelltext
1:
Label1.caption := TimeToStr(Time);					

??

Gruss
Daniel
etamatic
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 21.11.06 23:04 
timer nehmen...
Dragonclaw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 196

Windows Vista
Delphi 7 Prof.
BeitragVerfasst: Di 21.11.06 23:10 
Das kannste ganz einfach mit nem Timer machen, den findest du unter dem Reiter 'System'.
Wenn du Enabled auf true lässt fängt er direkt an.

Die Procedure bekommst du über nen Klick auf Ereignisse und dann Doppelklick auf 'OnTimer'.

Das Intervall des Timers gibt die abstände in millisekunden an, in denen die Procedure Timer
ausgeführt werden.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption := FormatDateTime('hh:nn:ss', now);
end;
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 21.11.06 23:16 
schon ganz gut,... aber du hats den processmessage vergessen...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
PROCEDURE TForm1.Button1Click(Sender: TObject);

VAR
 w: REAL;
BEGIN
 REPEAT
  w := w + 1;

  Label1.Caption := FormatDateTime('hh:nn:ss', now);
  
  application.processmessage; // <<-- hier einfügen
 UNTIL w = 200001;
END;
Arctics Threadstarter
Hält's aus hier
Beiträge: 13

xp
Delphi7
BeitragVerfasst: Di 21.11.06 23:20 
:shock:
danke, mit so einem timer ist ja sehr hilfreich,



ich hab erst vor kurzem mit delphi angefangen...

gibts hier eigentlich irgentwo ein tutorial?
Ironwulf
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: Di 21.11.06 23:21 
wenn ers so macht und dann noch nen normal schnelln rechner hat zeigt das label, vllt max. 4-5 sekunden an
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 22.11.06 00:24 
@Ironwulf: ein paar sekunden??? bei mir zeigt er nicht mal eine an. aber das war ja nicht seine frage...

aber er kann ja nach dem "application.processmessages" ja noch 'n sleep(3) oder so einbauen ;-)
VaNaTiC
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 30



BeitragVerfasst: Mi 22.11.06 00:56 
Setz das Timer.Interval auf etwa 500ms, dann wird die Zeit ordentlich angezeigt.

Und Sleep(x) hat zusätzlich zum Warten die gleiche Funktionalität wie Application.ProcessMessages.
Dragonclaw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 196

Windows Vista
Delphi 7 Prof.
BeitragVerfasst: Mi 22.11.06 01:02 
Ehmm wenn man den Timer auf 500ms (also 0,5sec) setzt aktualisiert sich die Ziet ja alle 0,5sec. Das bringt aber nix weil die Zeit sich ja im Sekundentakt (1000ms) verändert. Wenn du jetzt den Timer doppelt so oft ausführen lasst, verbraucht das nur mehr Leistung, und der Rest des Prgrammes läuft langsamer, die Zeit wird aber nicht genauer.
VaNaTiC
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 30



BeitragVerfasst: Mi 22.11.06 01:32 
TTimer ist nicht 100%ig genau und Deine Zeit wird demzufolge nicht GENAU nach einer Sekunde auch GENAU nach einer Sekunde aktualisiert, deshalb etwa der Turnus pro halbe Sekunde. Und von Systemauslastung kann man dabei nicht sprechen.