Autor Beitrag
Millo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 147



BeitragVerfasst: Mo 19.08.02 03:24 
Moin

Ich bekomme immer den Fehler:"Listenindex überschreitet 63" wenn ich versuche eine oder mehrere Dateien aus der ShellListView zu Löschen ich benutze diesen Code:
ausblenden Quelltext
1:
2:
3:
4:
5:
  
for i:=0 to ShellListView1.Items.Count-1 do begin
    if ShellListView1.Items.Item[i].Selected then
      DeleteFile(ShellListView1.Folders[i].PathName);
      ShellListView1.Refresh;
toms
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: Mo 19.08.02 07:38 
Hi,

Verwende eine DownTo-Schleife...
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mo 19.08.02 09:00 
Hallo Millo,

ich kenne die tShellListView nicht genau aber wahrscheinlich liegt es daran in welcher Reihenfolge Du die Items löscht.

Stell Dir mal vor Du hast eine StringListe mit 5 Items. Wenn Du so vorgehst wie in dem Code oben dann löscht Du von oben nach unten. Das Problem dabei ist das Du wenn Du das erste Item gelöscht hast alle folgenden Items nach "oben rutschen" und somit das zweite Item nun an der ersten Position der Liste zu finden ist das vorher dritte nur das zweite ist... usw. Wenn Du nun das 4. Item ansprechen willst ist es nicht mehr an der 4 Position zu finden.

Deshalb empfielt es sich immer die Liste von unten nach oben zu durchlaufen!

Gruß
TINO