Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Access violation beim Löschen von Listview-Einträgen (https://www.delphipraxis.net/109402-access-violation-beim-loeschen-von-listview-eintraegen.html)

Der.Kaktus 29. Feb 2008 17:38

Re: Bekomme immer Fehlermeldung
 
Hallo,

probiers mal so...



Delphi-Quellcode:
procedure TForm4.DLT_BTNClick(Sender: TObject);
var
I,L,CNT:Integer;
begin
 if Not( ListView.ItemIndex = -1 ) then
 for I := 0 to ListView.Items.Count - 1 do
// Try mal weggelassen
  if ListView.Items[I].Selected then ListView.Items[i].Delete
end;
Gruss

mkinzler 29. Feb 2008 17:39

Re: Bekomme immer Fehlermeldung
 
Delphi-Quellcode:
for I := ListView.Items.Count - 1 downto o do
    if ListView.Items[I].Selected then if ListView.Items[I].Delete;

dazar_t 29. Feb 2008 17:40

Re: Bekomme immer Fehlermeldung
 
Danke so habe ich es schon ausprobiert aber dies funktioniert nicht da die funktion ja irgendwann Einträge überprüft (i) die garnicht existieren da man ja immer welche löscht

EDIT: Danke mkinzler das funktioniert.

mkinzler 29. Feb 2008 17:41

Re: Bekomme immer Fehlermeldung
 
Zitat:

Zitat von dazar_t
Danke so habe ich es schon ausprobiert aber dies funktioniert nicht da die funktion ja irgendwann Einträge überprüft (i) die garnicht existieren da man ja immer welche löscht

Deshalb ja auch die umgekehrte Schleife

bluesbear 29. Feb 2008 17:42

Re: Bekomme immer Fehlermeldung
 
Nenee, mit ner for Schleife geht das nicht, weil sich der Count doch ändert, wenn man was löscht.

mkinzler 29. Feb 2008 17:47

Re: Bekomme immer Fehlermeldung
 
Zitat:

Zitat von bluesbear
Nenee, mit ner for Schleife geht das nicht, weil sich der Count doch ändert, wenn man was löscht.

Die Grenzen einer laufenden Schleife werden aber nicht angetastet

Union 29. Feb 2008 17:49

Re: Bekomme immer Fehlermeldung
 
Wie wär's mit diesem Versuch
Delphi-Quellcode:
i := 0;
while i < ListView.Items.Count-1 do
begin
  if ListView.Items[i].Selected then
    ListView.Items[i].Delete
  else
     inc(i);
end;

mkinzler 29. Feb 2008 17:50

Re: Bekomme immer Fehlermeldung
 
Der Code von oben geht doch

Union 29. Feb 2008 17:52

Re: Bekomme immer Fehlermeldung
 
Zitat:

Zitat von mkinzler
Der Code von oben geht doch

Streng genommen nicht wenn man downto o schreibt ;)

bluesbear 29. Feb 2008 17:55

Re: Bekomme immer Fehlermeldung
 
@mkinzler:
Naja eben. Ich mache das sowas mit "while EintragSelektiert do LöscheDen". Auf eine absteigende for schleife war ich noch nicht gekommen. Gefällt mir ehrlich gesagt auch weniger, aber das ist reine Geschmackssache.
Da warst du auch schneller http://www.delphipraxis.net/internal...=852551#852551 - ich gebs auf für heute mit dem Quiz :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:47 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz