Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Funktion abbrechen (https://www.delphipraxis.net/39238-funktion-abbrechen.html)

thepaul 30. Jan 2005 19:02


Funktion abbrechen
 
Hi,

wie kann ich eine laufende Funktion abbrechen?

mfg Paul

Ultimator 30. Jan 2005 19:04

Re: Funktion abbrechen
 
Mit
Delphi-Quellcode:
break;
geht das ;-)

edosoft 30. Jan 2005 19:10

Re: Funktion abbrechen
 
oder mit
Delphi-Quellcode:
Exit;
?


mit
Delphi-Quellcode:
Abort;
wird auch die "übergeordnete" funktion abgebrochen.
beim OnClose-event vonner tform kannst abort hinschreiben dann wirds fenster nicht geschlossen

thepaul 30. Jan 2005 19:14

Re: Funktion abbrechen
 
also wenn ich das hier schreibe
Delphi-Quellcode:
procedure Button1click...
begin
  break;
end;
werden alle Funktionen abgebrochen.

Was mach ich wenn ich nur eine bestimmte abrechen will?

edosoft 30. Jan 2005 19:21

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...)

gsh 30. Jan 2005 19:24

Re: Funktion abbrechen
 
Ein paar Bsp.:
Delphi-Quellcode:
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;
So damit müsste jetzt alles klar sein :mrgreen:

thepaul 30. Jan 2005 20:16

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:

edosoft 30. Jan 2005 20:20

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:
while not bAbort do
[..]
dann kannst du das
Delphi-Quellcode:
if bAbort then Break;
weglassen.

Chegga 30. Jan 2005 20:51

Re: Funktion abbrechen
 
Hi,

Delphi-Quellcode:
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;
MfG Marc

P.S.: Code nicht getestet...


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz