AGB  ·  Datenschutz  ·  Impressum  







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

Frage zu for Schleifen

Ein Thema von kabuco · begonnen am 3. Mär 2006 · letzter Beitrag vom 3. Mär 2006
Antwort Antwort
kabuco
(Gast)

n/a Beiträge
 
#1

Frage zu for Schleifen

  Alt 3. Mär 2006, 14:35
Hallo,

ich habe eine Frage bezüglich FOR-Schleifen: Gibt es eine Möglichkeit FOR-Schleifen forzeituig zu unterbrechen und neu anzufangen. Ich habe in einer FOR-Schleife ein Paar If-Anweisungen und wenn die erste erfüllt wird, dürchläuft die Schleife die anderen If-Anweisungen auch, das ist ja Blödsinn !

kabuco
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Frage zu for Schleifen

  Alt 3. Mär 2006, 14:38

hast du sowas?
Delphi-Quellcode:
for i := 1 to 5 do
begin
  if (a) then
    do_a();
  if (b) then
    do_b();
end;
Willst du jetzt die Schleife wieder bei 1 beginnen, wenn eine Bedingung zutrifft, oder willst du einfach zum naechsten Schleifenschritt springen?
Evtl. solltest du dir mal Delphi-Referenz durchsuchenbreak und Delphi-Referenz durchsuchencontinue ansehn

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Frage zu for Schleifen

  Alt 3. Mär 2006, 14:42
Willst du die Schleife abbrechen oder nur den einen Durchlauf? Wenn 1. dann break(); wen 2.) dann einfach else if oder case-Anweisung verwenden.

alcaeus war schneller
Markus Kinzler
  Mit Zitat antworten Zitat
kabuco
(Gast)

n/a Beiträge
 
#4

Re: Frage zu for Schleifen

  Alt 3. Mär 2006, 14:48
Danke für die Schnellen Antworten erst mal!
Ich möchte, wie alcaeus gesagt hat, zum nächsten Schleifenschritt springen. Gibt es da eine Funktion, den meiner Meinung nach brechen break und exit die Prozedur ab.

Kabuco

[edit]Upps, habe mir gerade den Hilfetext zu 'continue' angesehen, und da ist, was ich suchte! Danke für die Antworten[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Frage zu for Schleifen

  Alt 3. Mär 2006, 14:49
wenn du bei einer bestimmten Bedingung die Schleife wieder von ganz vorn beginnen lassen wölltest müsstest du die Zählvariable ja zurücksetzen
Delphi-Quellcode:
var LCount: Integer;
    LBreakCount: Integer;
begin
  LBreakCount := 0;
  for LCount := 1 to 5 do
  begin
    ListBox1.Items.Add(IntToStr(LCount));
    if (LCount = 5) and (LBreakCount < 1) then
    begin
      LCount := 0; //auf 0 und nicht 1 weil am Ende der schleife LCount erhöht wird
      inc(LBreakCount);
    end;
  end;
Dabei wird aber der Compiler meckern weil es nicht erlaubt ist innerhalb einer schleife die Zählvariable zu verändern.

Aber es gibt doch eine Möglichkeit diese Zählvariable zu verändern.
Ab hier sollten nur die jenigen weiterlesen die genau wissen was sie tun und sich des Risikos bewusst sind. (schließlich hat es gründe das der Compiler das nicht zulassen will)
Und zwar holen wir uns dazu einfach die Adresse der Zählvariablen und schreiben an diese Stelle im Speicher den gewünschten Wert. Somit ist es keine direkte Zuweisung auf die Zählvariable da wir ja eigentlich irgendwo im Speicher schreiben (und "zufällig" ist es eben die Adresse der Zählvariablen)
Delphi-Quellcode:
var LCount: Integer;
    LBreakCount: Integer;
begin
  LBreakCount := 0;
  for LCount := 1 to 5 do
  begin
    ListBox1.Items.Add(IntToStr(LCount));
    if (LCount = 5) and (LBreakCount < 1) then
    begin
      PInteger(@LCount)^ := 0; //auf 0 und nicht 1 weil am Ende der schleife LCount erhöht wird
      inc(LBreakCount);
    end;
  end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Frage zu for Schleifen

  Alt 3. Mär 2006, 14:51
also es gibt noch "Continue" das müsste das sein was du suchst
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:40 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