Entwickler-Ecke
Sonstiges (Delphi) - For Endevariable im Forblock verändern
Camulus - Do 07.09.06 15:11
Titel: For Endevariable im Forblock verändern
Hallo
wir haben hier folgendes Problemchen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| for i := 0 to anz_zeilen_1 do begin if GridView1.Cells[2, i] = 'true' then begin GridView2.AddRow(); GridView2.Cells[0, t] := GridView1.Cells[0, i]; GridView2.Cells[1, t] := GridView1.Cells[1, i]; anz_zeilen_1 := anz_zeilen_1 - 1; GridView1.DeleteRow(i); end; |
Kann mir/uns einer verraten woran das liegt? Oder ist das ein Bug
Delphiversion: 6 Pro
Moderiert von
Christian S.: Delphi-Tags hinzugefügt
sarsel - Fr 08.09.06 01:28
könntest du kurz beschreiben, was das programm tun soll und was t ist?
Gausi - Fr 08.09.06 08:40
Ich weiß zwar nicht genau, ob diese Zeile ausgeführt wird, nehme aber an, dass die for-Schleifen-Grenzen zu Beginn festgelegt werden und nicht verändert werden können.
Dein Problem (es kommt ne Zugriffsverletzung, oder?) kann man aber so lösen:
Delphi-Quelltext
1: 2:
| for i := anz_zeilen_1 downto 0 do |
Dann hat man zwar im anderen Grid eine umgekehrte Reihenfolge, aber das bekommt man bestimmt auch irgendwie in den Griff ;-)
Camulus - Fr 08.09.06 10:43
Naja... eben nicht. Es kommt garkeine Meldung. Es passiert garnichts. Die Zeile wird einfach übersprungen und ich/ wir wüssete/n gerne warum?!?
Allesquarks - Fr 08.09.06 10:50
Die for Schleife ist leider sehr statisch. Und leider wird sie in der Schule auch noch so hochgelobt und als primärschleife beigebracht. Man darf weder die Grenzen verändern noch den Schleifenzähler. MAn sollte sie abschaffen!!!!
Benutz mal ne while oder ne repeat Schleife. Da geht das alles!!
P.S. Es lebe goto!!
wdbee - Fr 08.09.06 11:11
Meist reicht es, die FOR-Schleife rückwärts zählen zu lassen.
In Fällen, bei denen z. B. aus einer Liste Elemente in der Schleife gelöscht werden, ändert sich neben der Anzahl auch die Position der Elemente, wenn vorhergehende gelöscht werden.
Mit
Delphi-Quelltext
1:
| for I := 0 to Anzahl - 1 do |
geht das nicht, während
Delphi-Quelltext
1:
| for I := Anzahl - 1 downto 0 do |
damit keine Probleme hat.
Jetstream - Fr 08.09.06 12:07
Titel: Re: For Endevariable im Forblock verändern
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| i:=-1; repeat inc(i); if GridView1.Cells[2, i] = 'true' then begin GridView2.AddRow(); GridView2.Cells[0, t] := GridView1.Cells[0, i]; GridView2.Cells[1, t] := GridView1.Cells[1, i]; anz_zeilen_1 := anz_zeilen_1 - 1; GridView1.DeleteRow(i); end; until i >= anz_zeilen_1; |
So in etwa ?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!