AGB  ·  Datenschutz  ·  Impressum  







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

Schleifendurchlauf abbrechen

Ein Thema von Nightfly · begonnen am 28. Jul 2005 · letzter Beitrag vom 28. Jul 2005
Antwort Antwort
Seite 1 von 2  1 2      
Nightfly

Registriert seit: 25. Mär 2004
Ort: Dresden
118 Beiträge
 
#1

Schleifendurchlauf abbrechen

  Alt 28. Jul 2005, 12:48
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.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Schleifendurchlauf abbrechen

  Alt 28. Jul 2005, 12:52
1. Lustige Einrückung
2. Dein Beispiel erzeugt eine Endlosschleife
3. Ich denke, du suchst Delphi-Referenz durchsuchenContinue
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Schleifendurchlauf abbrechen

  Alt 28. Jul 2005, 12:53
Du vergisst in der Schleife

[delphi]i:=i+1
Michael Enßlin
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: Schleifendurchlauf abbrechen

  Alt 28. Jul 2005, 12:57
Zitat von ichbins:
Du vergisst in der Schleife

[delphi]i:=i+1
Dann kann er ja gleich eine for-Schleife nehmen . Aber es sollte ja auch nur ein Beispiel sein, er hat sich wahrscheinlich vertippt.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Schleifendurchlauf abbrechen

  Alt 28. Jul 2005, 13:00
Und warum schreibst du nicht einfach
Delphi-Quellcode:
if i <> 2 then
  count := count + i;
Warum kompliziert, wenns auch einfach geht?
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Schleifendurchlauf abbrechen

  Alt 28. Jul 2005, 13:00
Zitat von Khabarakh:
Zitat von ichbins:
Du vergisst in der Schleife

[delphi]i:=i+1
Dann kann er ja gleich eine for-Schleife nehmen . 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.
  Mit Zitat antworten Zitat
Nightfly

Registriert seit: 25. Mär 2004
Ort: Dresden
118 Beiträge
 
#7

Re: Schleifendurchlauf abbrechen

  Alt 28. Jul 2005, 13:09
Ja, verzeihung, das Beispiel stammt nicht aus meinem Programm, i zu inkrementieren habe ich wirklich vergessen

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.
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Schleifendurchlauf abbrechen

  Alt 28. Jul 2005, 13:15
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.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Nightfly

Registriert seit: 25. Mär 2004
Ort: Dresden
118 Beiträge
 
#9

Re: Schleifendurchlauf abbrechen

  Alt 28. Jul 2005, 13:19
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)
  Mit Zitat antworten Zitat
Benutzerbild von tomaten
tomaten

Registriert seit: 19. Jun 2005
118 Beiträge
 
Delphi 2005 Architect
 
#10

Re: Schleifendurchlauf abbrechen

  Alt 28. Jul 2005, 13:25
Zitat von Nightfly:
Ja, verzeihung, das Beispiel stammt nicht aus meinem Programm, i zu inkrementieren habe ich wirklich vergessen

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.
Autsch, bei der Formatierung wird man ja blind!
  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 15:12 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