Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Schleifen und break; (https://www.delphipraxis.net/101274-schleifen-und-break%3B.html)

Asatru 10. Okt 2007 18:45


Schleifen und break;
 
Ich habe eine schleife die sich x mal wiederholt, möchte ich nun mein programm beenden mit Close; versucht die Anwendung die Schleifenanzahl noch komplett zu beenden! Dies ist ja nicht der Sinn der Sache, da ich ja aus der schleife rausmöchte und beenden!

Soweit wie ich weis läuft das alles über das break;

Wie sieht es nun aus, wenn ich via einen Button nur aus der Schleife möchte?

Code:
procedure TForm1.Beenden1Click(Sender: TObject);
begin
break; //Hm funzt leider icht
end;

Matze 10. Okt 2007 18:57

Re: Schleifen und break;
 
Hallo,

das müsstest du so in der Art lösen:

Delphi-Quellcode:
var Abbruch: Boolean = false;

// ...

// Beispiel: for-Schleife
// Bei repeat/while ging es direkt im Schleifenkopf/-fuß
for i := 1 to 10000 do
begin
  if Abbruch then
    break;
end;

// ...

// Button OnClick bzw. OnClose o.ä.
Abbruch := true;

Astartes 10. Okt 2007 18:59

Re: Schleifen und break;
 
Hi,

Tipp: Exit ist zum Verlassen von Proceduren und Funktionen!

Mfg Tom

DeddyH 10. Okt 2007 19:00

Re: Schleifen und break;
 
Zitat:

Zitat von Matze
Delphi-Quellcode:
var Abbruch: Boolean = false;

// ...

// Beispiel: for-Schleife
// Bei repeat/while ging es direkt im Schleifenkopf/-fuß
for i := 1 to 10000 do
begin
  if Abbruch then
    break;
end;

// ...

// Button OnClick bzw. OnClose o.ä.
Abbruch := true;

Da müsstest Du aber IMHO noch ein Application.ProcessMessages einbauen.

FAlter 10. Okt 2007 19:12

Re: Schleifen und break;
 
Hi,

wenn es ums Beenden geht:
Delphi-Quellcode:
for i := 1 to 10000 do
begin
  DoSomethingWith(i);

  Application.ProcessMessages;
  if Application.Terminated then
    break;
end;
Zum Abbruch wären möglich:
break - Schleife verlassen
exit - procedure / function verlassen
abort - mehrere proceduren / functionen auf einmal verlassen

In allen drei Fällen wird eventueller Code zwischen finally und end noch ausgeführt.

Bei Abort ist es wichtig, dass keine try-except-Blöcke vorkommen, welche EAbort behandeln, ohne sie erneut auszulösen. (Einer der Gründe, weshalb man bei try..except..end möglichst on EConvertError do ... verwenden sollte).

Mfg
FAlter

Asatru 10. Okt 2007 19:46

Re: Schleifen und break;
 
Vielen Dank für eure Hilfe, werds mal antesten!


Mit freundlichen Grüßen


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 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