Eigentlich bräuchte ich noch die Abbruchbedingung (Situation.beendet). Ich vermute aber mal, dass du da gar nicht prüfst, ob auf Abbruch geklickt wurde. So müsste es gehen:
Delphi-Quellcode:
Repeat
Befehlszyklus(Situation);
{ startet das Turingprogramm, wird aufgrund gegebener Startangaben definitiv mehrmals durchlaufen }
Application.ProcessMessages;
Until (Situation.beendet) or CancelClicked;
...
procedure TForm1.bAbbruchClick(Sender: TObject);
begin
CancelClicked := true;
Form1.close;
end;
Musst CancelClicked natürlich noch deklarieren und zu false initialisieren. Ob das Close da funktioniert bin ich mir nicht sicher, wenn nicht, würde ich mal versuchen, mit PostMessage ein WM_CLOSE in die MessageQueue zu stellen.