![]() |
Möglichkeiten einen Schritt der for-Schleife zu überspringen
Nabend allerseits,
welche möglichkeiten gibt es um in einer for-Schleife, einen durchlauf zu überspringen?
Code:
So in der Art. Welche möglichkeiten gibt es noch?
for i := 0 to 9 do
begin if i <> 4 then begin tuedies := unddas; end; end; Grüsse, Daniel :hi: |
Warum keine While Schleife?
Code:
Wobei das auch nicht viel eleganter ist.
i:=0;
while i<=9 do If i=3 then Inc(i,2) else Inc(i); |
Zitat:
Grüsse, Daniel :hi: PS: ich dachte eher an sowas: if i = 4 then i := 5 oder i +1 |
Tja, aber sonst wüßt ich auch nichts...
Gruß zurück :hi: |
Das Problem ist, in einer for-Schleife kannst du dioe Zählvariable nicht verändern. Deswegen ist wohl eine while-Schleife das beste.
|
Vielleicht was zum warum, der Frage.
In einer LV sind Einträge, welch Wunder... :roll: Nur einem dieser Einträge, kann eine 1 zugewiesen werden, ich muss also alle, bis auf den Markierten auf 0 setzen. Dazu müsste ich eben den Markierten Eintrag überspringen. Je nachdem welchen ich auf 1 setze, alle anderen müssen dann automatisch auf 0 gesetzt werden. Grüsse, Daniel :hi: |
Hallo Daniel,
ich sehe noch nicht, warum sich dies nicht elegant mit einer FOR-Schleife lösen läßt:
Delphi-Quellcode:
Warum nicht so?
For index:= 0 To myListView.Items.Count-1 Do
Begin If myListWiew.Items[Index].Selected Then myListView.Items[Index]._welche_Property_auch_immer:= 1 Else myListView.Items[Index]._welche_Property_auch_immer:= 0; End; |
Moin Zusammen,
oder so:
Delphi-Quellcode:
Damit hätte man auch Multiselect erledigt.
for i := 0 to ListView1.Items.Count-1 do
begin ListView1.Items[i].BeliebigeEigenschaft := ord(ListView1.Items[i].Selected); end; Wenn es definitiv nur ein Eintrag ist, könnte man sich auch eine Form Property einrichten, die jeweils den Index des zuletzt gewählten Eintrages enthält (initial -1). Dann hätte man immer den Index des Eintrages, dass beim Wechsel des Selected Items auf 0 gesetzt werden müsste, und könnte gezielt, via ListView1.Selected.Index, den einen Eintrag ansprechen, bei dem auf 1 gesetzt werden muss. Dieser Index kommt dann in die Property. Das könnte sich, zumindest bei vielen Werten, ausgesprochen positiv auf die Laufzeit auswirken. (im Gegensatz zum Durchlauf durch alle Items) |
Hi,
Zitat:
Das Bsp. von Typercon ist ein klassischer Fall. Variable bleibt Variable. bei 9 tritt der exit-Fall ein. Würde man schreiben : FOR i:= 1 TO 10000 würde die 9 der while schleife ignoriert, das entspräche dann for i := 1 to 9. Das ginge ja noch. Gruß Hansa |
Das meine ich:
Delphi-Quellcode:
Du kannst die Zählvariable innerhalb der for-Schleife nicht verändern! Und das hatte er ja vor, siehe hier:
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer; begin for i := 0 to 10 do begin Listbox1.Items.Add(IntToStr(i)); i := i + 2; end end; Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:04 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 by Thomas Breitkreuz