![]() |
Funktion abbrechen
Hi,
wie kann ich eine laufende Funktion abbrechen? mfg Paul |
Re: Funktion abbrechen
Mit
Delphi-Quellcode:
geht das ;-)
break;
|
Re: Funktion abbrechen
oder mit
Delphi-Quellcode:
?
Exit;
mit
Delphi-Quellcode:
wird auch die "übergeordnete" funktion abgebrochen.
Abort;
beim OnClose-event vonner tform kannst abort hinschreiben dann wirds fenster nicht geschlossen |
Re: Funktion abbrechen
also wenn ich das hier schreibe
Delphi-Quellcode:
werden alle Funktionen abgebrochen.
procedure Button1click...
begin break; end; Was mach ich wenn ich nur eine bestimmte abrechen will? |
Re: Funktion abbrechen
Delphi-Quellcode:
procedure machwas();
begin if(1 = 1) then Exit; machwas2; end; die funktion machwas2 wird nur ausgeführt wenn 1 ungleich 1 ist (also äh nie...) |
Re: Funktion abbrechen
Ein paar Bsp.:
Delphi-Quellcode:
So damit müsste jetzt alles klar sein :mrgreen:
Begin
exit; Showmessage('Ich komme nie dran'); end; begin Showmessage('Ich schon'); exit; Showmessage('Ich komme nie dran'); end; begin if Fehler = true then exit; Showmessage('Ich komm nur dran wenn kein Fehler'); end; begin for I := 0 to 5 do begin if Fehler = true then begin Break; end; Showmessage('ich komme 5 mal dran außer es passiert ein Fehler dann nicht'); end; end; begin try Showmessage('Ich komm dran'); except Showmessage('Normaler weiße ich nicht'); end; end; begin try Break; Showmessage('Ich nicht mehr'); except Showmessage('Dafür jetzt ich'); end; end; |
Re: Funktion abbrechen
ich glaub ihr habt mich flasch verstanden.
auf knofdruck wird Funktion 1 aufgerufen. die ist sehr Zeit und rechenintensiv. Jetzt soll sich der Button zum Abbruch-Button verändern. wenn die Function also schon läuft soll bei einem Klick auf den Button die Funktion abgebrochen werden. :coder: |
Re: Funktion abbrechen
ahso... lol
das machst du z.b. so: du definierst ne globale variable namens "bAbort" mit typ boolean. dann schreibst du:
Delphi-Quellcode:
procedure rechne();
var I: Integer; begin bAbort := false; I := 0; //I ist nur zur demonstration da, wird nicht benötigt while 1 = 1 do //endlosschlaufe begin //machwas Application.ProcessMessages; //wichtig, sonst hängt sich das GUI total auf, d.h. man kann auch nirgendwo draufklicken. if bAbort then Break; Inc(I); end; showmessage('Sie haben '+inttostr(i)+' durchgänge gewartet bis Sie auf abbrechen geklickt haben.'); end; /edit: in dem speziellen fall gehts natürlich auch so:
Delphi-Quellcode:
dann kannst du das
while not bAbort do
[..]
Delphi-Quellcode:
weglassen.
if bAbort then Break;
|
Re: Funktion abbrechen
Hi,
Delphi-Quellcode:
MfG Marc
const Max = 1;
var Abbruch: Integer; . . . procedure TForm1.Button1Click(Sender: TObject); var Knopf: Integer; begin // bla bla bla... inc (Abbruch); If Abbruch > Max then begin Button1.Caption := 'Abbrechen'; Knopf := Application.Messagebox('Soll der Vorgang abgebrochen werden?', 'Meldung',1+16); if Knopf = IDYes then Abort; end; if Knopf = IDCancel then machwas; end; procedure TForm1.FormCreate(Sender: TObject); begin Abbruch := 1; end; P.S.: Code nicht getestet... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz