Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Probleme mit While-Schleife (https://www.delphipraxis.net/101933-probleme-mit-while-schleife.html)

daredd 20. Okt 2007 19:34


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;

mkinzler 20. Okt 2007 19:38

Re: Probleme mit While-Schleife
 
I wird auch innerhalb der While-Schleife nicht geändert.

daredd 20. Okt 2007 19:41

Re: Probleme mit While-Schleife
 
was meinst du?

Apollonius 20. Okt 2007 19:41

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.

daredd 20. Okt 2007 19:43

Re: Probleme mit While-Schleife
 
Und was wäre ein eleganter weg?

Apollonius 20. Okt 2007 19:46

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