AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Doppelte Schleife verlassen

Ein Thema von Martin W · begonnen am 16. Jan 2015 · letzter Beitrag vom 17. Jan 2015
Antwort Antwort
Seite 1 von 2  1 2      
Martin W

Registriert seit: 29. Mai 2004
Ort: Augsburg
220 Beiträge
 
Delphi XE3 Enterprise
 
#1

Doppelte Schleife verlassen

  Alt 16. Jan 2015, 13:33
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
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Doppelte Schleife verlassen

  Alt 16. Jan 2015, 13:39
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.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Martin W

Registriert seit: 29. Mai 2004
Ort: Augsburg
220 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: Doppelte Schleife verlassen

  Alt 16. Jan 2015, 13:41
Oh, ja klar, die for und while Schleife

Danke deiner Antwort!


Viele Grüße
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Doppelte Schleife verlassen

  Alt 16. Jan 2015, 13:44
Goto
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Doppelte Schleife verlassen

  Alt 16. Jan 2015, 13:57
ü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.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Doppelte Schleife verlassen

  Alt 16. Jan 2015, 14:02
Hat mal wer Hammer und Nägel da?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.007 Beiträge
 
Delphi 12 Athens
 
#7

AW: Doppelte Schleife verlassen

  Alt 16. Jan 2015, 14:25
Du kannst beide Schleifen in eine separate Methode verlagern und diese dann bei Bedarf mit Exit verlassen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.007 Beiträge
 
Delphi 12 Athens
 
#8

AW: Doppelte Schleife verlassen

  Alt 16. Jan 2015, 14:29
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?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock
Online

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Doppelte Schleife verlassen

  Alt 16. Jan 2015, 15:03
Hat mal wer Hammer und Nägel da?

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

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#10

AW: Doppelte Schleife verlassen

  Alt 16. Jan 2015, 15:05
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 )

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 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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (16. Jan 2015 um 15:10 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:04 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