Announcement

Collapse
No announcement yet.

Schleife möglicht schnell beenden?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Schleife möglicht schnell beenden?

    Hallo,
    wie kann ich eine Schleife am schnellsten verlassen?

    BEISPIEL

    Abbruch :=False;
    Repeat
    A:=A+1;
    B:=B+1;
    C:=C+1;
    usw.
    Until Abbruch

    Diese Schleife könnte ich nun verlassen indem ich die Variable in einer anderen Proceduer auf True setze. Nun können im ungünstigsten Fall die Variablen A bis C um eins inkrementiert werden. Um dies zu vermeiden müsste ich nun hinter jeden inkrementiert-Befehl eine Abfrage der Variable „Abbruch“ durchführen und im Falle True die Schleife mit Break beenden.
    Da sich im Originalcode mehrere hundert Befehlszeilen befinden ist mir dies zu aufwendig.
    Gibt es eine Möglichkeit die Schleife , die sich in einer Procedure befindet durch eine andere Procedure zu beenden?
    Ich habe schon versucht die Schleife in Try Except einzubinden und durch einen Button-Click mit Raise eine Excepten ausgelöst, um somit die Schleife zu unterbrechen. Hat nicht funktioniert.
    Es wäre möglich die gesamte Procedure im in der sich die Schleife befindet von aussen mit Exit zu beenden. Aber wie??

    Danke
    Michael

  • #2
    <pre>
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls;

    type
    TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    private
    { Private-Deklarationen }
    public
    { Public-Deklarationen }
    a:boolean;
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.DFM}

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    a:=false;

    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    repeat
    application.processmessages;
    if a then break;{<----------}
    until false;{<-----------------}
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
    a:=true;
    end;

    end.
    </pre&gt

    Comment

    Working...
    X