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
 
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
 


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 13:05 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