Entwickler-Ecke

Sonstiges (Delphi) - Fehler bei löschen von Dateien


O'rallY - Mi 28.08.02 13:32
Titel: Fehler bei löschen von Dateien

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
...
        if ListView1.Items.Count = 0 then
           exit;

        for i := 0 to ListView1.Items.Count - 1 do
        begin
           if DeleteFile(ListView1.Items[0].SubItems[4]) then {...SubItems[4] enthält Dateinamen (mit Pfad) }
              ListView1[0].Delete;
        end;
...


Wenn ich diesen Code ausgeführt habe und dann irgendwann das Programm schließe erscheint folgende Fehlermeldung:
Exception EAccess Vielation .....
Ich verstehe erstens nicht warum überhaupt eine Fehlermeldung kommt (klar, sonst würd ich ja nicht posten) und zweitens versteh ich nicht, warum diese dann erst beim Schließen erscheint. Hilfe!!! :cry:

Es erscheint ebenfalls eine ähnlich Fehlermeldung wenn ich die Prozedur ein zweites mal aufrufe...

Ich glaube es ausschließen zu können, das es irgendwas mit der TListView Kompo zu tun hat.


Cashels - Mi 28.08.02 13:50

Hallo,
das Problem liegt darin dass du die Knoten deiner Listview löschst, und somit es den Index listview1.items.count-1 nicht mehr gibt. Du kannst das Problem umgehen indem du die Knoten rückwärts durchläufst:

Quelltext
1:
 for i := ListView1.Items.Count - 1 downto 0 do.....                    

Gruss,
Tom


O'rallY - Mi 28.08.02 15:12

Oh, verdammt! Ist mir nicht aufgefallen. Vielen Dank!