Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: Break / Exit - Grundsatzfrage

  Alt 19. Dez 2008, 10:45
For- und While-"Schleifchen" sind intern eigentlich gleich.
Bei den Repeat-Until-"Schleifchen" wird nur der Ausdruck zuletzt ausgewertet

Delphi-Quellcode:
for i := i2 to i3 do begin

  if xyz then break;

end;

// entspricht (bzw)

i := i2;
while i <= i3 do begin

  if xyz then break;

  inc(i);
end;

// nja, eigentlich mehr diesem, wenn man bedenkt,
// daß Delphi i3 nur zu Begin der Schleife auswertet und das ergebnis zwischenspeichert

i := i2;
e := i3;
while i <= e do begin

  if xyz then break;

  inc(i);
end;

// und Delphi macht intern aus der For-, bzw der 2. While-Schleife dieses

i := i2;
e := i3;
Loop:
if i > e then goto LoopExit;

  if xyz then goto LoopExit;

  inc(i);
goto Loop;
LoopExit:

// PS: das ganze mit Repeat-Until, statt While, sieht etwa so aus

i := i2;
e := i3;
Loop:

  if xyz then goto LoopExit;

  inc(i);
if i <= e then goto Loop;
LoopExit:

// alles ohne CodeOptimierung
so und jetzt sage mal einer GOTO / Exit / Break seien so schlecht, wenn intern eh alles auf GOTO+IF aufbaut


Am Ende hat alles seine Vor- und Nachteile.

Und ich versuch das zu verwenden, welches in der entsprechenden Situation am Übersichtlichsten/Einfachsten ist.

[add] *rote kästen ignorier*


[add]
Nur hier sollten endlich mal alle den Unterschied zwischen EXIT und Break/Continue begreifen

Exit - beendet die Prozedur/Funktion
Break - beendet die Schleife
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat