AGB  ·  Datenschutz  ·  Impressum  







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

For Schleife in 5er Schritten

Ein Thema von XXcD · begonnen am 23. Dez 2007 · letzter Beitrag vom 25. Dez 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#1

For Schleife in 5er Schritten

  Alt 23. Dez 2007, 18:36
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:
 for j:=0 to FResult.FieldsCount-1 do
          begin
{Befehl}
j:=j+5;
end;
Geht das überhaupt die For Schleife in 5er Schritten zu durchlaufen? Bei googel und in dem Forum konnte ich nichts finden was mir weiterhilft.

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;
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: For Schleife in 5er Schritten

  Alt 23. Dez 2007, 18:38
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
Klaus
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: For Schleife in 5er Schritten

  Alt 23. Dez 2007, 18:40
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: For Schleife in 5er Schritten

  Alt 23. Dez 2007, 18:44
Hallo,

hier noch ein Ansatz:

Delphi-Quellcode:
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;
Frohe Weihnachten
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#5

Re: For Schleife in 5er Schritten

  Alt 23. Dez 2007, 18:46
Code:
for i := Anfang div 5 to Ende div 5 do
  (i * 5) = 5er-Schritte :zwinker:
Delphi-Quellcode:
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;
oder
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;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#6

Re: For Schleife in 5er Schritten

  Alt 23. Dez 2007, 18:50
Jo danke für die schnellen Antworten.
Ich probier das gleich mal aus.

Und euch auch Frohe Weihnachten
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#7

Re: For Schleife in 5er Schritten

  Alt 23. Dez 2007, 18:51
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.
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#8

Re: For Schleife in 5er Schritten

  Alt 23. Dez 2007, 18:55
kurzer nachtrag. was mir auffällt ist, dass du eigentlich noch 'ne kleine zweite schleife machen kannst...

so in etwa:

Code:
for i := 0 to x do
  for j := 0 to 5 do
   with xxx do
     add(blabla[j]);
so sollts eigentlich elegant klappen. <HTH>
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#9

Re: For Schleife in 5er Schritten

  Alt 24. Dez 2007, 11:34
Hallo,

spricht eigentlich irgendetwas gegen das folgende Verfahren:
Delphi-Quellcode:
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;
Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#10

Re: For Schleife in 5er Schritten

  Alt 24. Dez 2007, 11:42
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 14:43 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