AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Bei einer For Schleife einen Durchgang überspringen

Bei einer For Schleife einen Durchgang überspringen

Ein Thema von buster55 · begonnen am 13. Jul 2008 · letzter Beitrag vom 18. Jul 2008
Antwort Antwort
Seite 2 von 3     12 3   
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#11

Re: Bei einer For Schleife einen Durchgang überspringen

  Alt 18. Jul 2008, 12:15
Zitat von RavenIV:
Zitat von Andy386:
Mir ist gestern was interessantes aufgefallen: Mein Delphi hat die for-schleife
Delphi-Quellcode:
for i:=0 to ende do
irgendwas;
so kompliert: wiederhole (ende-0) Mal: "irgendwas;" Hat mich tierisch angekotzt, dass D nicht richtig abfragt....
Was soll hier falsch sein?
Das ganze "irgendwas" müßte ende+1 mal ausgeführt werden. Allerdings kann ich nicht überpüfen, ob wirklich so ein Code erzeugt wird.

Gruß Gammatester
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#12

Re: Bei einer For Schleife einen Durchgang überspringen

  Alt 18. Jul 2008, 12:33
Zitat von gammatester:
Das ganze "irgendwas" müßte ende+1 mal ausgeführt werden. Allerdings kann ich nicht überpüfen, ob wirklich so ein Code erzeugt wird.
Falsch.
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.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: Bei einer For Schleife einen Durchgang überspringen

  Alt 18. Jul 2008, 12:35
Du passt dich wohl schon für deinen neuen Job an C an.
Aber gammatester hat Recht. Sonst wäre ja auch die klassische Schleife von 0 bis Count - 1 falsch.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#14

Re: Bei einer For Schleife einen Durchgang überspringen

  Alt 18. Jul 2008, 12:52
Zitat von Apollonius:
Du passt dich wohl schon für deinen neuen Job an C an.
Aber gammatester hat Recht. Sonst wäre ja auch die klassische Schleife von 0 bis Count - 1 falsch.
Jetzt, wo Du es sagst. Das hat was.
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
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Andy386

Registriert seit: 26. Mär 2008
55 Beiträge
 
#15

Re: Bei einer For Schleife einen Durchgang überspringen

  Alt 18. Jul 2008, 18:15
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]
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#16

Re: Bei einer For Schleife einen Durchgang überspringen

  Alt 18. Jul 2008, 18:23
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.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#17

Re: Bei einer For Schleife einen Durchgang überspringen

  Alt 18. Jul 2008, 20:14
Zum Verständnis: Rückwärts bis 0 zählen ist schneller, als vorwärts bis N.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#18

Re: Bei einer For Schleife einen Durchgang überspringen

  Alt 18. Jul 2008, 20:38
Zitat von alzaimar:
Zum Verständnis: Rückwärts bis 0 zählen ist schneller, als vorwärts bis N.
wieso?
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: Bei einer For Schleife einen Durchgang überspringen

  Alt 18. Jul 2008, 20:52
Weil du dann direkt auf das dec ein jnz @@Loop folgen lassen kannst, ohne noch einen Vergleich durchführen zu müssen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#20

Re: Bei einer For Schleife einen Durchgang überspringen

  Alt 18. Jul 2008, 21:04
Zitat von Apollonius:
Weil du dann direkt auf das dec ein jnz @@Loop folgen lassen kannst, ohne noch einen Vergleich durchführen zu müssen.
Ah, stimmt - hatte den JNZ Befehl nicht gedacht.
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf