![]() |
For Schleife in 5er Schritten
Hallo,
ich schreibe gerade ein Verwaltungsprogramm wo eine Kundenliste in ein Listview aufgelistet werden soll. Soweit funktioniert auch alles bis auf die kleinigkeit, dass ich eine For Schleife in 5er Schritten durchlaufen lassen müsste. Wenn ich die Variable ändern will bekomme ich eine Fehlermeldung
Delphi-Quellcode:
Geht das überhaupt die For Schleife in 5er Schritten zu durchlaufen? Bei googel und in dem Forum konnte ich nichts finden was mir weiterhilft.
for j:=0 to FResult.FieldsCount-1 do
begin {Befehl} j:=j+5; end; Hier noch der Code:
Delphi-Quellcode:
for j:=0 to FResult.FieldsCount-1 do
begin with Listview do begin LI:=Items.Add; LI.Caption:=FResult.FieldValue(j); LI.SubItems.Add(FResult.FieldValue(j+1)); LI.SubItems.Add(FResult.FieldValue(j+2)); LI.SubItems.Add(FResult.FieldValue(j+3)); LI.SubItems.Add(FResult.FieldValue(j+4)); end; FResult.Next; end; |
Re: For Schleife in 5er Schritten
Guten Abend,
ist es nicht möglich die FOR Schleife durch eine While Schleife zu ersetzen. Da kannst Du die Schrittweite selber definieren. Grüße Klaus |
Re: For Schleife in 5er Schritten
Delphi lässt for-Schleifen nur in Einser-Schritten zu. So kann die for-Schleife nämlich deutlich besser optimiert werden als beispielsweise in C++. Wenn du so ein Konstrukt brauchst, kannst du auch eine while-Schleife nehmen.
|
Re: For Schleife in 5er Schritten
Hallo,
hier noch ein Ansatz:
Delphi-Quellcode:
Frohe Weihnachten
for j := 0 to Pred(FResult.FieldsCount) div 5 do
begin with Listview do begin LI := Items.Add; n := j * 5; LI.Caption := FResult.FieldValue(n); LI.SubItems.Add(FResult.FieldValue(n+1)); LI.SubItems.Add(FResult.FieldValue(n+2)); LI.SubItems.Add(FResult.FieldValue(n+3)); LI.SubItems.Add(FResult.FieldValue(n+4)); end; FResult.Next; end; |
Re: For Schleife in 5er Schritten
Code:
for i := Anfang div 5 to Ende div 5 do
(i * 5) = 5er-Schritte :zwinker:
Delphi-Quellcode:
oder
for j := 0 to (FResult.FieldsCount - 1) div 5 do begin
with Listview do begin LI := Items.Add; LI.Caption := FResult.FieldValue(j * 5); LI.SubItems.Add(FResult.FieldValue((j * 5) + 1)); LI.SubItems.Add(FResult.FieldValue((j * 5) + 2)); LI.SubItems.Add(FResult.FieldValue((j * 5) + 3)); LI.SubItems.Add(FResult.FieldValue((j * 5) + 4)); end; FResult.Next; end;
Delphi-Quellcode:
for j := 0 to (FResult.FieldsCount - 1) div 5 do begin
k := (j * 5); with Listview do begin LI := Items.Add; LI.Caption := FResult.FieldValue(k); LI.SubItems.Add(FResult.FieldValue(k + 1)); LI.SubItems.Add(FResult.FieldValue(k + 2)); LI.SubItems.Add(FResult.FieldValue(k + 3)); LI.SubItems.Add(FResult.FieldValue(k + 4)); end; FResult.Next; end; |
Re: For Schleife in 5er Schritten
Jo danke für die schnellen Antworten.
Ich probier das gleich mal aus. Und euch auch Frohe Weihnachten :-D :-D :-D |
Re: For Schleife in 5er Schritten
wie bereits erwähnt, kann in einer for schleife die zählvariable nicht geändert werden, da sie iaR in das register übertragen wird und dann über die schleife geloopt wird (jnz). hat mit der optimierung zu tun... und ist auch sinnvoll. wenn du hier keine optimierung haben möchtest...nimm 'ne while oder 'ne repeat schleife... willst die optimierung haben, kannst die zählvariable durchmultiplizieren mit deinem gewünschten wert. dies nur zum verständnis, da hier schon alles gesagt wurde.
|
Re: For Schleife in 5er Schritten
kurzer nachtrag. was mir auffällt ist, dass du eigentlich noch 'ne kleine zweite schleife machen kannst...
so in etwa:
Code:
so sollts eigentlich elegant klappen. <HTH>
for i := 0 to x do
for j := 0 to 5 do with xxx do add(blabla[j]); |
Re: For Schleife in 5er Schritten
Hallo,
spricht eigentlich irgendetwas gegen das folgende Verfahren:
Delphi-Quellcode:
:lol: Jürgen
for j:=0 to FResult.FieldsCount-1 do
begin if (j mod 5 = 0) do begin // mach etwas nur im ersten und danach jedem weiteren 5. Schritt end; end; |
Re: For Schleife in 5er Schritten
Funktionieren wird das natürlich auch. Allerdings ist es bei sehr großen Datenmengen ineffezient nur in 20% der Durchläufe etwas zu machen ;-) Wobei das reine iterieren wie es bei dem Beispiel ja passieren wird, kaum ins Gewicht fallen wird ;)
|
Re: For Schleife in 5er Schritten
Hab mir grad nich alles durchgelesen weil ich net viel Zeit habe, und weiss auch net wie das um die Performance steht aber was hälst du hiervon?
Delphi-Quellcode:
edit: shit haett ich mal vorher zwei beiträge drüber gelesen xD
for i := 0 to x do
begin if i mod 5 <> 0 then continue; //hier dein code end; |
Re: For Schleife in 5er Schritten
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:01 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