![]() |
Bei einer For Schleife einen Durchgang überspringen
ich denke der titel scheint recht eindeutig aber noch mal eine beschreibung meines problems:
gibt es einen befehl den man in einer if-bedingung, die sich wiederrum in einer for schleife befindet , verwenden kann ,damit die forschleife den aktuellen durchgang abbricht und beim nächsten durchlauf weitermacht? ich kenne nur skip; und break; aber die brechen die ganze for schleife ab :? |
Re: Bei einer For Schleife einen Durchgang überspringen
Den durchzuführenden Code in den Else-Zweig ausführen
|
Re: Bei einer For Schleife einen Durchgang überspringen
mmh das macht meiner ansicht nach keinen sinn, denn ich möchte richedit line für line mit einer for schleife abarbeiten und zuvor mit der if klären ob die zeile die gerade an der eihe ist gültig ist. wenn nicht soll sie praktisch übersprungen werden
|
Re: Bei einer For Schleife einen Durchgang überspringen
Das entsprechende Schlüsselwort heißt Continue.
|
Re: Bei einer For Schleife einen Durchgang überspringen
Wäre
![]() Zitat:
Edit: Zu langsam, mal wieder. |
Re: Bei einer For Schleife einen Durchgang überspringen
Klar. dehalb den Code innerhalb der Abfrage, entwser im If oder else
|
Re: Bei einer For Schleife einen Durchgang überspringen
ok danke an alle
continue; war genau das richtige ;-) |
Re: Bei einer For Schleife einen Durchgang überspringen
Mir ist gestern was interessantes aufgefallen: Mein Delphi hat die for-schleife
Delphi-Quellcode:
so kompliert:
for i:=0 to ende do
irgendwas;
SQL-Code:
Hat mich tierisch angekotzt, dass D nicht richtig abfragt....
wiederhole (ende-0) Mal: "irgendwas;"
|
Re: Bei einer For Schleife einen Durchgang überspringen
Was hat er nicht richtig abgefragt?
|
Re: Bei einer For Schleife einen Durchgang überspringen
Zitat:
|
Re: Bei einer For Schleife einen Durchgang überspringen
Zitat:
Gruß Gammatester |
Re: Bei einer For Schleife einen Durchgang überspringen
Zitat:
Die Schleife wird durchlaufen, solange i < ende ist. Also von 0 bis ende - 1. Somit genau ende-mal. Wenn du es ende+1-mal durchlaufen lassen willst, dann must Du die Abbruchkritierien anderst setzen. Oder nen anderen Schleifentyp einsetzten. |
Re: Bei einer For Schleife einen Durchgang überspringen
Du passt dich wohl schon für deinen neuen Job an C an. :P
Aber gammatester hat Recht. Sonst wäre ja auch die klassische Schleife von 0 bis Count - 1 falsch. |
Re: Bei einer For Schleife einen Durchgang überspringen
Zitat:
Passiert in Irgendwas vielleicht eine Exception, wenn i auf ende steht? Dann würde er doch auch aus der Schleife rausfallen, oder? Zeig doch mal mehr Code, so ist es ein lustiges Ratespiel. Vermutlich geht der Schalter schon langsam Richtung C-Systax ;-) |
Re: Bei einer For Schleife einen Durchgang überspringen
Aso, ende-0-1 kann auch sein.
Aber mein Problem war, dass es D völlig egal ist, welchen Wert i dann [edit](während des Laufens durch die for-schleife)[/edit] hat! Ich z.B. habe i im watch/... geändert. Wollte nicht 999Mal auf F9 drücken. Da aber nicht auf das For-Kritertium geprüft wurde, kam es zu einem Überlauf (i war gleichzeitig ein Array-index) [edit] Da D seine 1000 Läufe vollbekommen wollte[/edit] |
Re: Bei einer For Schleife einen Durchgang überspringen
Du änderst eine Variable im Debugger und wunderst dich, dass es nicht mehr hinhaut? Im regulären Code kann i niemals geändert werden im Rumpf der For-Schleife, also ist das eine korrekte Optimierung. Wenn du eine For-Schleife überspringen willst, kannst du einen Breakpoint dahinter setzen. Oder, wenn es zum Beispiel der letzte Lauf sein soll, nimmst du eben einen bedingten Breakpoint.
|
Re: Bei einer For Schleife einen Durchgang überspringen
Zum Verständnis: Rückwärts bis 0 zählen ist schneller, als vorwärts bis N.
|
Re: Bei einer For Schleife einen Durchgang überspringen
Zitat:
|
Re: Bei einer For Schleife einen Durchgang überspringen
Weil du dann direkt auf das dec ein jnz @@Loop folgen lassen kannst, ohne noch einen Vergleich durchführen zu müssen.
|
Re: Bei einer For Schleife einen Durchgang überspringen
Zitat:
|
Re: Bei einer For Schleife einen Durchgang überspringen
Oder allgemeiner: Es geht schneller einen Wert gegen 0 zu prüfen, als gegen einen anderen Wert (Für Prüfung mit 0 gibt es in Assembler direkte Anweisungen)
Edit: Möhp, zu langsam |
Re: Bei einer For Schleife einen Durchgang überspringen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz