![]() |
Probleme mit While-Schleife
Hallo habe ein Problem, hab so ein kleines programm für einen Zufallszahlengenerator geschrieben.
Also es soll nach dem klick auf den button1 die berechnung und die ausgabe von zufallszahlen erfolgen bis man auf dem buttton2 drückt um abzubrechen. Main laptop streikt aber sobal ich auf den button1 drücke fährt sich das programm fest, bzw. es passiert nichts. !!! Ohne While-Schleife funktioniert es aber, al´so random und so !!! Hier mein code:
Delphi-Quellcode:
procedure TFORM1.GibZahlen;
var x1, x2, x3, x4, x5, x6, x7, x8, x9 :Integer; begin randomize; x1 := (random(20)+1)*10; x2 := (random(20)+1)*10; x3 := (random(20)+1)*10; x4 := (random(20)+1)*10; x5 := (random(20)+1)*10; x6 := (random(20)+1)*10; x7 := (random(20)+1)*10; x8 := (random(20)+1)*10; x9 := (random(20)+1)*10; Label10.Caption := Format('%d %d %d %d %d %d %d %d %d', [x1,x2,x3,x4,x5,x6,x7,x8,x9]); Label1.height :=x1; Label2.height :=x2; Label3.height :=x3; Label4.height :=x4; Label5.height :=x5; Label6.height :=x6; Label7.height :=x7; Label8.height :=x8; Label9.height :=x9; end; procedure TForm1.Unendlich(Sender: TObject); begin while i > 0 do begin GibZahlen; end; end; procedure TForm1.Button1Click(Sender: TObject); begin i := 1; Unendlich(self); end; procedure TForm1.Button2Click(Sender: TObject); begin if i > 0 then begin i := 0; end; end; |
Re: Probleme mit While-Schleife
I wird auch innerhalb der While-Schleife nicht geändert.
|
Re: Probleme mit While-Schleife
was meinst du?
|
Re: Probleme mit While-Schleife
Das Stichword heißt hier Application.ProcessMessages, denn in der Schleife gibst du dem Programm keine Möglichkeit, Button2Click aufzurufen. Du musst einfach noch Application.ProcessMessages in die Schleife einfügen. Das ist allerdings recht unelegant.
|
Re: Probleme mit While-Schleife
Und was wäre ein eleganter weg?
|
Re: Probleme mit While-Schleife
Die eigentlich unelegante Sache an Application.ProcessMessages ist, dass es tendenziell viel zu oft aufgerufen wird, was zu Performance-Problemen führen kann. Fürs erste ist es aber okay.
Dann wäre da noch die Sache mit i. Wenn überhaupt, würde ich dafür eine boolean-Variable nehmen, denn eigentlich prüfst du ja nur auf true oder false. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 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