| Autor |
Beitrag |
Arctics
Hält's aus hier
Beiträge: 13
xp
Delphi7
|
Verfasst: 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
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 raziel: Quote- durch Delphi-Tags ersetzt
|
|
Ironwulf
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: Di 21.11.06 23:03
omg ;D
nimm nen timer anstatt nen button
|
|
Danny87
      
Beiträge: 688
Windows 10 Pro 64bit
Sprachen: HTML, PHP, JavaScript, Delphi || IDE: RAD Studio 10.1 Berlin Starter, WeBuilder
|
Verfasst: Di 21.11.06 23:03
Warum machst du nicht einfach nen Timer mit
Delphi-Quelltext 1:
| Label1.caption := TimeToStr(Time); |
??
Gruss
Daniel
|
|
etamatic
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 21.11.06 23:04
|
|
Dragonclaw
      
Beiträge: 196
Windows Vista
Delphi 7 Prof.
|
Verfasst: 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.
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
|
Verfasst: Di 21.11.06 23:16
schon ganz gut,... aber du hats den processmessage vergessen...
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; UNTIL w = 200001; END; |
|
|
Arctics 
Hält's aus hier
Beiträge: 13
xp
Delphi7
|
Verfasst: Di 21.11.06 23:20
danke, mit so einem timer ist ja sehr hilfreich,
ich hab erst vor kurzem mit delphi angefangen...
gibts hier eigentlich irgentwo ein tutorial?
|
|
Ironwulf
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: 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
|
Verfasst: 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
      
Beiträge: 30
|
Verfasst: 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
      
Beiträge: 196
Windows Vista
Delphi 7 Prof.
|
Verfasst: 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
      
Beiträge: 30
|
Verfasst: 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.
|
|