Hi,
Du hast doch in der abzubrechenden Prozedur bestimmt eine Schleife? Dann bau da erstmal Application.ProcessMessages ein. Dann nimmst Du Dir eine globale Boolean-Variable, die Du aber am Anfang der Prozedur auf false setzt.
Mit Hilfe eines Buttons setzt Du die Variable einfach true.
In der Schleife in der Prozedur kannst Du dann per if die Schleife verlassen, entweder weil die Variable true ist oder weil die Bedingung mit den Zahlen stimmt.
Also in etwa so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var abbruch:Boolean;
procedure Button1Click(...) begin abbruch := true; end;
procedure Bearbeite begin while (not abbruch) and (zahl1<>zahl2) do begin Application.ProcessMessages; end; end; |
Die while-Schleife wird solange ausgeführt, bis entweder abbruch true ist oder zahl1=zahl2 ist. Im Inneren der Schleife sorgt Application.ProcessMessages dafür, dass der Klick auf den Button auch bearbeitet und die entsprechende Routine ausgeführt wird, hier eben Button1Click.
Musst das halt nur noch auf Dein Problem anpassen, weil Dein Code etwas "undurchsichtig" ist.
//EDIT:
Eine Alternative zu while will ich doch noch vorstellen. Du kannst eine if-Abfrage einbauen und darauf basierend die Prozedur mit Exit verlassen.
Delphi-Quelltext
1:
| if abbruch OR (zahl1=zahl2) then Exit; |
einfach in die Schleife einbauen, das reicht dann auch, wenn Du Deine Schleife nicht umprogrammieren willst/kannst.