Delphi-PRAXiS
Seite 1 von 2  1 2      

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

Nightfly 28. Jul 2005 12:48


Schleifendurchlauf abbrechen
 
Hi

ich möchte beim eintreffen einer Bestimmten bedingung den aktuellen (while) Schleifendurchlauf abbrechen, jedoch nicht die ganze Schleife. Sozusagen möchte ich gleich zum nächsten Durchlauf schreiten, ohne den Schwanz abzuarbeiten.

Beispiel wie's nicht geht:
Delphi-Quellcode:
 
count := 0;
i := 0;
while i <= 4 do
           begin
            if i = 2  then break;
            count := count + i;
           end;
Nach diesem Code ist Count = 1, ich möchte jedoch, das Count = 8 ist, gibts da noch nen anderen Befehl als break?

exit und abort gehen auch nicht. :(

Khabarakh 28. Jul 2005 12:52

Re: Schleifendurchlauf abbrechen
 
1. Lustige Einrückung :wink:
2. Dein Beispiel erzeugt eine Endlosschleife :gruebel:
3. Ich denke, du suchst Delphi-Referenz durchsuchenContinue

ichbins 28. Jul 2005 12:53

Re: Schleifendurchlauf abbrechen
 
Du vergisst in der Schleife

[delphi]i:=i+1

Khabarakh 28. Jul 2005 12:57

Re: Schleifendurchlauf abbrechen
 
Zitat:

Zitat von ichbins
Du vergisst in der Schleife

[delphi]i:=i+1

Dann kann er ja gleich eine for-Schleife nehmen :wink: . Aber es sollte ja auch nur ein Beispiel sein, er hat sich wahrscheinlich vertippt.

leddl 28. Jul 2005 13:00

Re: Schleifendurchlauf abbrechen
 
Und warum schreibst du nicht einfach
Delphi-Quellcode:
if i <> 2 then
  count := count + i;
Warum kompliziert, wenns auch einfach geht? :gruebel:

Die Muhkuh 28. Jul 2005 13:00

Re: Schleifendurchlauf abbrechen
 
Zitat:

Zitat von Khabarakh
Zitat:

Zitat von ichbins
Du vergisst in der Schleife

[delphi]i:=i+1

Dann kann er ja gleich eine for-Schleife nehmen :wink: . Aber es sollte ja auch nur ein Beispiel sein, er hat sich wahrscheinlich vertippt.

Ne du, ichbins hat recht.

So wie das Beispiel jetzt ist (auch wenn es falsch ist), wäre das eine Endlosschleife. Du musst schon irgendwo I := I + 1 schreiben.

Nightfly 28. Jul 2005 13:09

Re: Schleifendurchlauf abbrechen
 
Ja, verzeihung, das Beispiel stammt nicht aus meinem Programm, i zu inkrementieren habe ich wirklich vergessen :oops:

Delphi-Quellcode:
count := 0;
i := 0;
while i <= 4 do
           begin
            if i = 2  then
                       begin                    
                          i := i+1;
                          Continue;
                       end;
            count := count + i;
            i := i+1;
           end;
So ists schöner...und macht genau das was ich will, aber die meißten wußten eh was gemeint war.

if <> 2 war leider keine Option, dann könnt ich ja gleich count := 8 machen ;) Das Continue muß ich in der Hilfe irgendwie übersehen haben. :roll:

leddl 28. Jul 2005 13:15

Re: Schleifendurchlauf abbrechen
 
:gruebel: Warum ist "<>" keine Option? Wenn du weißt, bei welcher Zahl nichts gemacht werden soll, kannst du doch auch einfach eben diese Zahl ausschließen. Zur Not, falls es mehrere Zahlen sind, kannst du ja auch alle diese Zahlen in eine Menge packen und dann überprüfen, ob die Zahl nicht in der Menge ist.

Nightfly 28. Jul 2005 13:19

Re: Schleifendurchlauf abbrechen
 
In meinem Späteren Programm weiß ich's aber vorher noch nicht, wie gesagt, dies hier ist nur ein einfaches Beispiel, um mein Anliegen zu verdeutlichen. (und in welchem, zugegeben, <> einfacher wäre)

tomaten 28. Jul 2005 13:25

Re: Schleifendurchlauf abbrechen
 
Zitat:

Zitat von Nightfly
Ja, verzeihung, das Beispiel stammt nicht aus meinem Programm, i zu inkrementieren habe ich wirklich vergessen :oops:

Delphi-Quellcode:
count := 0;
i := 0;
while i <= 4 do
           begin
            if i = 2  then
                       begin                    
                          i := i+1;
                          Continue;
                       end;
            count := count + i;
            i := i+1;
           end;
So ists schöner...und macht genau das was ich will, aber die meißten wußten eh was gemeint war.

if <> 2 war leider keine Option, dann könnt ich ja gleich count := 8 machen ;) Das Continue muß ich in der Hilfe irgendwie übersehen haben. :roll:

Autsch, bei der Formatierung wird man ja blind! ;)


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