Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Doppelte Schleife verlassen (https://www.delphipraxis.net/183516-doppelte-schleife-verlassen.html)

Martin W 16. Jan 2015 13:33

Doppelte Schleife verlassen
 
Hi,

folgender Code aktuell:

Delphi-Quellcode:
 
var
  changed: boolean;
  varCurrActClass:         TLastActionClass;

  i:                       integer;
begin    

    changed := True;
 
     while changed do
        begin
          changed := False;
          for i := 0 to FLastActionList.Count -1 do
            begin

              varCurrActClass := FLastActionList.Items[i];

              if (...) then
                begin
                  FLastActionList.Remove(varCurrActClass);
                  FLastActionList.TrimExcess;
                  changed := True;
                  break;
                end;

              if (...) then
                begin
                  FLastActionList.Remove(varCurrActClass);
                  FLastActionList.TrimExcess;
                  changed := True;
                  break;
                end;

            end;
        end;

end;
Gibt es hierbei eine Möglichkeit, das changed "wegzuoptimieren"? Also ein Break, das sowohl die if, als auch die While Schleife abbricht?

Viele Grüße,
Martin

Neutral General 16. Jan 2015 13:39

AW: Doppelte Schleife verlassen
 
Zitat:

Also ein Break, das sowohl die if, als auch die While Schleife abbricht?
Du meinst die for- und die while-Schleife ;)

Nein sowas gibt es nicht. Es gibt nicht wirklich eine andere Möglichkeit als sich zu merken ob die äußeren schleifen abgebrochen werden sollen.

Martin W 16. Jan 2015 13:41

AW: Doppelte Schleife verlassen
 
Oh, ja klar, die for und while Schleife :roll:

Danke deiner Antwort!


Viele Grüße

Der schöne Günther 16. Jan 2015 13:44

AW: Doppelte Schleife verlassen
 
Goto :duck:

Neutral General 16. Jan 2015 13:57

AW: Doppelte Schleife verlassen
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1286729)
Goto :duck:

:mrgreen: über Exceptions/Abort und einem entsprechend günstig gesetzten try-except Block ginge es auch. Aber das sind dann halt die weniger schönen Möglichkeiten.

p80286 16. Jan 2015 14:02

AW: Doppelte Schleife verlassen
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1286729)
Goto :duck:

Hat mal wer Hammer und Nägel da?:evil:

Gruß
K-H

Uwe Raabe 16. Jan 2015 14:25

AW: Doppelte Schleife verlassen
 
Du kannst beide Schleifen in eine separate Methode verlagern und diese dann bei Bedarf mit Exit verlassen.

Uwe Raabe 16. Jan 2015 14:29

AW: Doppelte Schleife verlassen
 
Zitat:

Zitat von Martin W (Beitrag 1286724)
Gibt es hierbei eine Möglichkeit, das changed "wegzuoptimieren"? Also ein Break, das sowohl die if, als auch die While Schleife abbricht?

In deinem Beispiel führen die beiden Breaks aber ja gerade nicht zum Abbruch der while-Schleife, sondern zu derer Fortsetzung. Die while-Schleife würde ja nur dann beendet, wenn keine der if-Bedingungen innerhalb der for-Schleife anschlägt.

Ist das jetzt so gewollt oder war nur deine Frage falsch formuliert?

Sherlock 16. Jan 2015 15:03

AW: Doppelte Schleife verlassen
 
Zitat:

Zitat von p80286 (Beitrag 1286734)
Zitat:

Zitat von Der schöne Günther (Beitrag 1286729)
Goto :duck:

Hat mal wer Hammer und Nägel da?:evil:

Gruß
K-H

Das nicht, aber ich hätte da zwei relativ große Holzbalken, die ich beisteuern könnte.

Sherlock

himitsu 16. Jan 2015 15:05

AW: Doppelte Schleife verlassen
 
Jupp, hier geht das Exit, da sowieso die Funktion verlassen wird, nach den Schleifen.

Ihr könnt ja gern man bei Emba den Vorschlag einreichen das Break und Continue zu ändern.
(mein uralter Vorschlag im QC wurde ja nicht beachtet :cry:)

z.B.
Delphi-Quellcode:
Break 2;
Continue 2;
für das Verlassen/Fortsetzen von den inneren zwei Schleifen.

Und für For-Schleifen eventuell auch
Delphi-Quellcode:
for i1 := 0 to 10 do begin
  for i2 := 0 to 10 do begin
    ...
    Break i1;
  end;
end;
für "Breche alle Schleifen ab, bis hin zur For-Schleife mit der i1-Variable".
Eventuell kann man die Repeat- und Whileschleifen auch "benennen" und dann
Delphi-Quellcode:
Break DerName;
.


Und dann hätte ich auch gern noch ein "Self" für With-Blöcke, oder den "Alias", wie es ihn in tausenden anderen Sprachen gibt.
sogar in http://www.amazon.de/Revolutionary-G.../dp/1874416206


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:45 Uhr.
Seite 1 von 2  1 2      

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