Delphi-PRAXiS
Seite 3 von 4     123 4      

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:59

Re: Bekomme immer Fehlermeldung
 
das geht, habs probiert..
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i,i1:integer;
SArray:Array[0..20] of byte;  //nur mal als Bsp. die 21 Bytes
begin
 i1:=0;
 for i:=0 to 20 do SArray[i]:=0; //loeschen
 for I := 0 to ListView1.Items.Count - 1 do
 begin
// Try mal weggelassen
  if ListView1.Items[I].Selected then
  begin
   SArray[i1]:=i;
   inc(i1);
  end;
 end;
 For i:=i1-1 downto 0  do ListView1.Items[SArray[i]].delete;
end;
gruss

Union 29. Feb 2008 18:01

Re: Bekomme immer Fehlermeldung
 
Delphi-Quellcode:
SArray:Array[0..20] of byte
Und wenn die ListView mehr als 256 Einträge hat?

Der.Kaktus 29. Feb 2008 18:04

Re: Bekomme immer Fehlermeldung
 
da steht doch "als Bsp."..kannst auch Array[0..4096] machen :-D
ging doch erstmal um nen Ansatz :idea:

DeddyH 29. Feb 2008 18:11

Re: Bekomme immer Fehlermeldung
 
Der Ansatz mit der absteigenden Schleife ist doch OK (solange nur ein Eintrag je Durchlauf gelöscht wird), Ihr braucht Euch nicht mehr zu streiten :D

Union 29. Feb 2008 19:13

Re: Bekomme immer Fehlermeldung
 
@der.Kaktus
Zitat:

Zitat von Union
Delphi-Quellcode:
SArray:Array[0..20] of byte
Und wenn die ListView mehr als 256 Einträge hat?

Die Anzahl der Elemente ist kein Problem, aber die Speicherung des Itemindex in einem Byte schon - das läuft dann nämlich über. Und das sogar schob evtl. beim ersten Element, wenn das erste selektierte Item > 256 ist. Die Folge wäre die Löschung von falschen Elementen!

Der.Kaktus 29. Feb 2008 19:15

Re: Bekomme immer Fehlermeldung
 
dann koennte ich Array of Integer empfehlen.

Larsi 29. Feb 2008 19:33

Re: Bekomme immer Fehlermeldung
 
Nur so als Frage: Kann man nicht gleich Items.Destroy sagen? Er will doch alle Items löschen, oder???

mkinzler 29. Feb 2008 19:34

Re: Bekomme immer Fehlermeldung
 
Zitat:

Zitat von Larsi
Nur so als Frage: Kann man nicht gleich Items.Destroy sagen? Er will doch alle Items löschen, oder???

Nein, nur die selektierten

Muetze1 29. Feb 2008 20:25

Re: Bekomme immer Fehlermeldung
 
/EDIT: Delphi-Referenz durchsuchenTListView.DeleteSelected() ?

DeddyH 29. Feb 2008 20:34

Re: Bekomme immer Fehlermeldung
 
*Pah* wie langweilig, da find ich die ganze (unnötige) Diskussion spannender :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:49 Uhr.
Seite 3 von 4     123 4      

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