Hi
Grundsätzlich gebe ich Narses recht, das Schleifen, ob Repeat oder While nicht durch Useraktion, sondern durch Vergleiche aus dem Programm beendet werden sollten. Trotzdem kann ich mir vorstellen, das aus irgendwelchen Gründen diese Abbruchbedingung nicht mehr gegeben ist und dann um die Endlosschleife zu beenden, ein "Reset"-Button Rettungsanker werden soll. Dafür gibt es die Ereignisbehandlung. Du findest im Objektinspektor aller Elemente die Ereignisproceduren und durch doppelclick auf die entsprechende Spalte (onClick, onChange, onExit etc. ) generierst du den Procedurkopf. Nun brauchst du nur noch deinen Code einzufügen.
z.B. Abbruch einer Repeat-Schleife
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| Bedingung:=False; Repeat .... .... if x=y then Bedingung :=true; until Bedingung; |
und nun die Useraktion
Delphi-Quelltext
1: 2: 3: 4:
| Procedure TMyForm.MyResetButtonClick(Sender: Tobject); Begin Bedingung:=true; end; |
Nun ja, nicht sehr elegant und sehr anfällig....
Man beachte die globale Deklaration von "Bedingung". Dadurch ist überall im Programm möglich, diese Variable zu beinflussen und dann gibt's stundenlange Fehlersuche. Aber so kann man sich aus einer Endlosschleife retten. Besser ist jedoch immer, innerhalb der Schleife dafür zu sorgen, das diese nicht endlos läuft.
Gruß oldmax
Zier dich nich so, ich krieg dich schon....