AW: Löschen aus der StringList verursacht Fehler, wieso?
23. Mai 2015, 22:25
Du musst eines bedenken: nehmen wir an du hast eine StringList mit 10 Items, also Count = 10.
Nun gehst du mit For To Do
0 bist 9 durch. Das ist der Wert von Count - 1 am Anfang. Das merkt sich die For To Do
Schleife. Sie merkt sich die Zahl 9 und geht alle 10 Werte durch. Aber mitten drin löscht du Items aus der StringList. Nach dem ersten Löschvorgang gibt es nur noch 9 Items, nach dem zweiten 8, bei dem dritten 7, vierten 6, fünften 5, sechsten (das wäre dann i = 5) hätte die StringList nur noch 4 Items. Spätestens hier greifst du auf einen Item den es nicht mehr gibt.
Lösung: nicht for i := 0 to gvErrorReportList.Count - 1 do
sondern for i := gvErrorReportList.Count - 1 downto 0 do
. In dem Fall gehst du von oben nach unten und überschreitest nie die Grenze.
|