![]() |
Kann der PC net Zählen??
Hey Ho,
ich möchte gerne einen timer von 300 bis 0 runterzählen und die Zahlen zw. 300 und 0 in einem Label anzeigen. Das ganze habe ich mit der For-schleife probiert, aber nach 1 sek. steht gleich 0 da. Mein Code:
Delphi-Quellcode:
Was habe ich falsch gemacht?
var i:Integer;
begin for i:= 300 downto 0 do Label3.Caption:='Hallo ' + Inttostr(i) +' Tschüss'; Bitte hiermit um Hilfe ;-) |
Der Text des Labels wird zwar verändert, aber die Veränderung nicht angezeigt. Probiers mal so:
Delphi-Quellcode:
Allerdings wirst du nicht mehr als ein kurzes Aufflackern sehen, denn von 300 bis 0 geht das in ein paar Milisekunden :wink:
var i:Integer;
begin for i:= 300 downto 0 do begin Label3.Caption:='Hallo ' + Inttostr(i) +' Tschüss'; Label3.Refresh; end; |
Hallo DJ-SPM,
Du solltest besser einen Rechner mit einem 8080 Prozessor mit 4,77MHz nehmen, dann kannst Du das herunterzählen beobachten. Ich würde sagen Du hast alles richtig gemacht, aber dein Rechner ist zu schnell. bye |
hallo erstmal,
Setz doch einfach nen Timer, Intervall 1000 oder so und in jedem Timerereignis verringerst du den Wert um 1. Dann siehst wenigstens etwas von der Zählerei. mfg Daniel |
Hallo,
die Schelfie läuft einfach zu schnell durch, das kannst Du gar nciht wahrnehmen und somit siehst Du nur das Ende. Mach nach der Zeile mit Labe.Caption ein Sleep(250); und setzen die zwei zeilen in ein begin und end;. Grüsse, Daniel :hi: @Claus auch 4,77MHz sind da noch zu schnell. ;) |
Danke für eure schnelle Antwort
@sanchez: Ging leider auch nicht so richtig...sry @daniel: ??? Wie mache ich das, was meinst du? Könntest du einen Code Preis geben?? |
Zitat:
Delphi-Quellcode:
Denk ich mir mal so :roll:
begin
Label3.Caption:='Hallo ' + Inttostr(i) +' Tschüss'; Sleep(250); Label3.Refresh; end; MfG Florian :hi: |
Hallo,
Delphi-Quellcode:
Grüsse, Daniel :hi:
for i := 30 downto 0 do
begin Lab.Cap := IntToStr(i); Sleep(250); Application.Processmessages; end; |
Hallo,
kleinen Nachtrag noch. Bitte wähle das nächste mal ein passenden Titel! Ausserdem verschiebe ich das nach Delphi-Language, das hat wirklich nichts mit Komponenten zutun! Grüsse, Daniel :hi: |
Moin Zusammen,
vielleicht besser erst Application.ProcessMessages bzw. Refresh, und dann Sleep(250). Dann wird auch der erste Wert für 250ms angezeigt |
Noch besser. Anstatt sleep, das benutzen:
Delphi-Quellcode:
procedure delay(msec:longint);
var start,stop:longint; begin start := gettickcount; repeat stop := gettickcount; application.processmessages; until (stop - start ) >= msec; end; |
Versuchs mal so:
(so mach ich meine Countdowns)
Delphi-Quellcode:
var
Form1: TForm1; counter: Integer; implementation {$R *.dfm} procedure TForm1.Timer1Timer(Sender: TObject); begin dec(counter); Button1.Caption:='Countdown'+IntToStr(counter); end; procedure TForm1.FormShow(Sender: TObject); begin counter:=300; end; end. |
Hallo DJ-SPM,
konntest du etwas damit anfangen?? |
Hi,
also ich habe das Problem so gelöst, dass ich eine Progressbar implementiert habe und wenn diese auf eine bestimmte Position kommt, der Monitor in den Standby - Modus wechselt. Denn das Flackern in Label1.Caption war nicht so schön Aber trotzdem danke!!! |
Moment. Hab eich das richtig verstanden? Du schaltest den Monitor in den Standby-Modus nur weil du das mit dem Flackern des Labels nicht in den Griffbekommen hast? :shock:
Das darf doch nicht war sein. Warum machst du an der Stelle nicht gleich einen Reboot? |
Zitat:
Wiedem auch sei, das Thema mit dem Flackern hatten wir vor ein paar Monaten schonmal, also, wer suchet der findet! Grüsse, Daniel :hi: |
Nein,
ich hatte es so gedacht, dass Label1.Caption irgendwann auf 0 runtergezählt hat und dann der Monitor in den Standby-Mode geht (eine Art Countdown). Aber mir ist dann eingefallen, dass das mir der Progressbar eleganter aussieht... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz