Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Ausweg aus Schleife


Ice - Do 30.01.03 10:18
Titel: Ausweg aus Schleife
Hallo Leute,

ich habe da ein Problem und zwar versuche ich aus einer repeat until Schleife mit diesem Quelltext:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
var
 stop : boolean;

implementation

procedure Button1.Click(Sender:TObject);
begin
 stop := false;
 repeat
  <Anweisungen>
 until stop; 
end;

procedure Button2.Click(Sender:TObject);
begin
 stop := true;
end;

herauszukommen. Wenn ich Button1 drücke soll die Schleife solange durchlaufen werden bis ich Button2 drücke. Kann mir da jemand helfen?
Danke schonmal im voraus!

Ice

Moderiert von user profile iconTino: Code-Tags hinzugefügt.


bis11 - Do 30.01.03 10:48

Du mußt abfragen in Deiner Repeat Until-schleife ob der Button 2 gedrückt wird. Denn so wie Du jetzt den Code geschreiben hast, bekommt Deine Variable nie den Wert true.


Ice - Do 30.01.03 11:14

Danke für den Tip aber wie kann ich das machen? Ich meine welches Event frage ich da ab? Button2.click?

mfg Ice


Anonymous - Do 30.01.03 11:15
Titel: Re: Ausweg aus Schleife
Schreibe mal in Deiner Schleife:

Quelltext
1:
Application.ProcessMessages;                    

Dann kannst Du auch auf Button2 klicken und stoppen. Du kannst natürlich auch nochmal auf Button1 (oder sonst wohin) klicken, dieses wird dann ebenfalls ausgeführt.
Du müsstest also noch alles bis auf den Stop-Button sperren.

Gruß Tom


Ice - Do 30.01.03 11:25

Vielen Dank!!
Hat super funtioniert!

:D

mfg Ice


Sharky - Do 30.01.03 11:39

Ice hat folgendes geschrieben:
Vielen Dank!!
Hat super funtioniert!


Hai,

nur mal so als ergänzung zu Toms Beitrag.

Bei deiner ersten Version hat es nicht funktioniert weil dein Programm nicht "mitbekommen" hat das Du den Butten gedrückt hast. Jeder Mausklick wird von Windows "verarbeitet" und von diesem an das zuständige Fenster weitergeleitet. Durch Application.ProcessMessages sagst Du deinem Programm: "Hole" dir alle Messages die für dich in der Warteschlange stehen.

*Das ist jetzt nur ganz grob beschrieben. Aber es hilft sicher weiter wenn man weiss warum man etas in den Code schreibt*

Moderiert von user profile iconTino: Leerzeilen entfernt.


Ice - Do 30.01.03 12:34

ja danke, sicher ist es besser wenn man weiss warum etwas funktioniert als nur zu wissen das es funktioniert.

vielen Dank. :)

mfg Ice