Einzelnen Beitrag anzeigen

Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#1

Abbrechen und auf Abbruch warten?

  Alt 28. Nov 2006, 10:43
Hallo,

ich schaffe es nicht, eine Schleife extern abzubrechen und auf den erledigten Abbruch zu warten.
Bisher habe ich das so gemacht (nur das Nötige):
Formular mit zwei Schaltern.
Der eine läßte die Schleife los, der andere hält sie an.
Der Implementations-Teil:

Delphi-Quellcode:
var Abbruch: Boolean = False;
    abgebrochen: Boolean = false;

procedure TForm1.Button1Click(Sender: TObject);
begin
    abbruch:=false;
    while true do begin
      application.processmessages;
      if Abbruch then begin
        abgebrochen:=true;
        break;
      end;
    end;
    If abbruch then begin
      showmessage(inttostr(integer(abgebrochen))+'Abbruch');
   end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var i: LongInt;
begin
  abgebrochen:=false;
  abbruch:=true;
  application.ProcessMessages;
{Wird ordentlich abgebrochen. Das "showmessage in Button1Click ist nur zum Gucken. Muss nicht sein!
Nun will ich auf den Abbruch warten und das geht nicht. Abgebrochen bleibt false und es wird auch keine Meldung im ersten //Schalter generiert. Nehme ich diese Schleife weg, geht es ordentlich. Hintergrund: Ich benutze
rekursive Funktionen und er soll erst weitermachen, wenn auch wirklich alles beendet wurde.
Man kann übrigens nicht mal mit Systemmenü oder oben rechts das Programm beenden!!!
Es sieht fast so aus, als wenn er Abbruch:=true erst an das restliche Programm sendet, wenn die
zweite Ereignisprocedure verlassen wird! Aber das ist doch Quatsch, oder?
Button2click geht so weiter:}

Delphi-Quellcode:
  while not abgebrochen do begin
    label1.caption:=inttostr(i);
    inc(i);
    application.ProcessMessages;
  end;
end;
Wo mache ich meinen Denklfehler und wie geht es? Hat jemand einen Tipp?

Gruß
Matthias
  Mit Zitat antworten Zitat