Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Kann der PC net Zählen?? (https://www.delphipraxis.net/6107-kann-der-pc-net-zaehlen.html)

TheMiller 29. Jun 2003 21:14


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:
var i:Integer;
begin
for i:= 300 downto 0 do
Label3.Caption:='Hallo ' + Inttostr(i) +' Tschüss';
Was habe ich falsch gemacht?
Bitte hiermit um Hilfe ;-)

Chewie 29. Jun 2003 21:17

Der Text des Labels wird zwar verändert, aber die Veränderung nicht angezeigt. Probiers mal so:

Delphi-Quellcode:
var i:Integer;
begin
for i:= 300 downto 0 do
begin
  Label3.Caption:='Hallo ' + Inttostr(i) +' Tschüss';
  Label3.Refresh;
end;
Allerdings wirst du nicht mehr als ein kurzes Aufflackern sehen, denn von 300 bis 0 geht das in ein paar Milisekunden :wink:

Duffy 29. Jun 2003 21:18

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

Sanchez 29. Jun 2003 21:21

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

Daniel B 29. Jun 2003 21:28

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. ;)

TheMiller 29. Jun 2003 21:38

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??

flomei 29. Jun 2003 21:44

Zitat:

Zitat von DJ-SPM
Wie mache ich das, was meinst du? Könntest du einen Code Preis geben??

Ich denke so:

Delphi-Quellcode:
begin
  Label3.Caption:='Hallo ' + Inttostr(i) +' Tschüss';
  Sleep(250);
  Label3.Refresh;
end;
Denk ich mir mal so :roll:

MfG Florian :hi:

Daniel B 29. Jun 2003 21:44

Hallo,

Delphi-Quellcode:
for i := 30 downto 0 do
begin
  Lab.Cap := IntToStr(i);
  Sleep(250);
  Application.Processmessages;
end;
Grüsse, Daniel :hi:

Daniel B 29. Jun 2003 23:09

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:

Christian Seehase 30. Jun 2003 00:33

Moin Zusammen,

vielleicht besser erst Application.ProcessMessages bzw. Refresh, und dann Sleep(250).
Dann wird auch der erste Wert für 250ms angezeigt

Luckie 30. Jun 2003 08:18

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;

Privateer3000 30. Jun 2003 20:43

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.

Privateer3000 2. Jul 2003 09:14

Hallo DJ-SPM,

konntest du etwas damit anfangen??

TheMiller 2. Jul 2003 16:14

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!!!

Luckie 2. Jul 2003 17:57

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?

Daniel B 2. Jul 2003 18:03

Zitat:

Zitat von Luckie
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:

Ziemlich Bitter oder? *stundenlangeskopfschütteln*

Wiedem auch sei, das Thema mit dem Flackern hatten wir vor ein paar Monaten schonmal, also, wer suchet der findet!

Grüsse, Daniel :hi:

TheMiller 3. Jul 2003 19:42

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