Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - stringlisten vergleichen - exception
the-kecks - Mi 22.04.09 20:45
Titel: stringlisten vergleichen - exception
hi,
ich habe ein programm geschrieben in dem 2 stringlisten verglichen werden und dann die einträge die in der stringlist "alt" fehlen in einer memo ausgibt. ich kriege an einer stelle immer die exception "listenindex überschreitet das maximum(2)".
hier der code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| for i2:=0 to neu.count-1 do begin for i3:=0 to alt.count-1 do begin if pos(neu[i2], alt[i3]) >0 then neu.Delete(i2); end; end; for i4:=0 to neu.count-1 do memo1.lines.add(neu[i4]); |
mfg
Zyklame - Mi 22.04.09 21:15
wenn du ein Item löschst wird die Liste kürzer, aber die Randbereiche der Schleife werden nach begin dieser nicht mehr aktuallisiert.
Um das Problem zu umgehen solltest du die Schleife Rückwärts durchlaufen dann tritt das Problem nicht auf.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| for i2:= neu.count-1 downto 0 do begin for i3:= 0 to alt.count-1 do begin if pos(neu[i2], alt[i3]) >0 then neu.Delete(i2); end; end; for i4:=0 to neu.count-1 do memo1.lines.add(neu[i4]); |
Edit:
natürlich hat jaenicke recht
(hab nicht genau genug hingeschaut aus welcher liste gelöscht wird, habs korrigiert)
jaenicke - Mi 22.04.09 21:19
Die äußere Schleife muss rückwärts laufen, nicht die inneren. ;-)
the-kecks - Mi 22.04.09 21:41
danke an euch :)
jetzt funzt es!
mfg
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!