![]() |
Delphi-Version: 2010
FOR - Schleife mit unterbrechung
Diesmal hab ich eine einfache Frage glaub ich, doch leider fin dich dazu nichts bzw. weiß nicht wonach ich suchen soll.
Undzwar möchte ich eine For schleife unterbrechen und wieder fortsetzen, also quasi:
Delphi-Quellcode:
Also i soll einmal mit dem wert 1, dann mit wert 2 die schleife durchlaufen, danach auf 5 springen...
For i := 0 to 2 and 5 to 8 do begin
Doch geht sowas überhaupt, wenn ja, wie sieht es dann richtig aus? |
AW: FOR - Schleife mit unterbrechung
Mit einer for-schleife nicht.
Hier müsstest du eine while-schleife machen:
Delphi-Quellcode:
i := 0;
while i < 8 do begin ... Inc(i); if i = 3 then i := 5: end; |
AW: FOR - Schleife mit unterbrechung
dann könnte ich es aber auch so machen, oder:
Delphi-Quellcode:
For i := 0 To 2 Do Begin
//Anweisung End; For i := 5 To 8 Do Begin //Anweisung End; |
AW: FOR - Schleife mit unterbrechung
Ja, wenn es trotzdem noch DRY ist
|
AW: FOR - Schleife mit unterbrechung
Dry ?
|
AW: FOR - Schleife mit unterbrechung
Delphi-Quellcode:
for i in [1..2,5..8] do .....
|
AW: FOR - Schleife mit unterbrechung
Zitat:
|
AW: FOR - Schleife mit unterbrechung
Klar geht das mit einer For-Schleife:
Delphi-Quellcode:
for i:=0 to 8 do begin
if i in [3,4] then continue; writeln(i); end; |
AW: FOR - Schleife mit unterbrechung
Du kannst das auch so machen:
Delphi-Quellcode:
Oder Du verlagerst den Code in eine eigene Routine, der Du das "Teilarray" übergibst.
For i := 0 To 8 Do Begin
if i in [0..2, 5..8] then ... End; [edit] :lol: gammatester hatte den gleichen Gedanken, nur andersherum umgesetzt [/edit] |
AW: FOR - Schleife mit unterbrechung
Zitat:
|
AW: FOR - Schleife mit unterbrechung
Zitat:
|
AW: FOR - Schleife mit unterbrechung
Allerdings haben alle Varianten mit dem "in" den gleichen Nachteil: i muss sich im Byte-Bereich bewegen.
|
AW: FOR - Schleife mit unterbrechung
Du kannst statt dem SET auch ein Integer-Array verwenden ... läßt sich ja notfalls auch live deklarieren.
![]() |
AW: FOR - Schleife mit unterbrechung
oder auch
Delphi-Quellcode:
Type
TI=Array of Integer; var i:INteger; begin for I in TI(VarArrayOf([1,2500,700])) do Memo1.Lines.add(IntToStr(i)); end; |
AW: FOR - Schleife mit unterbrechung
Oder auch:
Delphi-Quellcode:
Das dürfte auch in älteren Delphi-Versionen funktionieren.
procedure TForm1.DoSomethingSenseless(Values: array of integer);
var i: integer; begin for i := Low(Values) to High(Values) do Memo1.Lines.Add(IntToStr(Values[i])); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:10 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