![]() |
Access violation beim Löschen von Listview-Einträgen
Guten Tag
Immer wen ich diesen Code ausführe :
Delphi-Quellcode:
Bekomme ich immer diese Fehlermeldung : Access violation ar adress 0046EC17 in module 'Project3.exe'.
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 if ListView.Items[I].Selected then CNT := CNT+1; Finally for L := 0 to CNT do ListView.Items[ListView.ItemIndex].Delete; End; end; Funkotinieren tut der Code aber komischer weise Optimal Help pls [edit=Luckie]Titel "Bekomme einen Fehler" verbessert. Mfg, Luckie[/edit] |
Re: Bekomme immer Fehlermeldung
Delphi-Quellcode:
for I := 0 to ListView.Items.Count-1 do
|
Re: Bekomme immer Fehlermeldung
Hmmm aber die Fehlermeldung kommt leider immer noch
|
Re: Bekomme immer Fehlermeldung
Delphi-Quellcode:
for L := 0 to T.Count-1 do
|
Re: Bekomme immer Fehlermeldung
Auch dieses verhindert die fehlermedeldung nicht. Ich habe oben auch mal einen veränderten code hingesetzt der allerdings immer doch diese Fehlermeldung hervorruft.
|
Re: Bekomme immer Fehlermeldung
Delphi-Quellcode:
Du versuchstest ja immer den markierten zu Löschen
ListView.Items[L].Delete;
|
Re: Bekomme immer Fehlermeldung
Dieses kommt im Oben NEUEN Code nicht auf aber die fehlermeldung schon!
|
Re: Bekomme immer Fehlermeldung
Was soll der Code genau machen?
|
Re: Bekomme immer Fehlermeldung
Er löscht alle makierten TListView einträge
|
Re: Bekomme immer Fehlermeldung
Mir erschließt sich der Zweck des Codes nicht so ganz. Gegenüber dem ersten Post ist die Stringlist verschwunden. Was soll der eigentlich tun?
EDIT: schon wieder zu langsam :( |
Re: Bekomme immer Fehlermeldung
Hallo,
probiers mal so...
Delphi-Quellcode:
Gruss
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; |
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; |
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. |
Re: Bekomme immer Fehlermeldung
Zitat:
|
Re: Bekomme immer Fehlermeldung
Nenee, mit ner for Schleife geht das nicht, weil sich der Count doch ändert, wenn man was löscht.
|
Re: Bekomme immer Fehlermeldung
Zitat:
|
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; |
Re: Bekomme immer Fehlermeldung
Der Code von oben geht doch
|
Re: Bekomme immer Fehlermeldung
Zitat:
|
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 ![]() |
Re: Bekomme immer Fehlermeldung
das geht, habs probiert..
Delphi-Quellcode:
gruss
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; |
Re: Bekomme immer Fehlermeldung
Delphi-Quellcode:
Und wenn die ListView mehr als 256 Einträge hat?
SArray:Array[0..20] of byte
|
Re: Bekomme immer Fehlermeldung
da steht doch "als Bsp."..kannst auch Array[0..4096] machen :-D
ging doch erstmal um nen Ansatz :idea: |
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
|
Re: Bekomme immer Fehlermeldung
@der.Kaktus
Zitat:
|
Re: Bekomme immer Fehlermeldung
dann koennte ich Array of Integer empfehlen.
|
Re: Bekomme immer Fehlermeldung
Nur so als Frage: Kann man nicht gleich Items.Destroy sagen? Er will doch alle Items löschen, oder???
|
Re: Bekomme immer Fehlermeldung
Zitat:
|
Re: Bekomme immer Fehlermeldung
/EDIT:
![]() |
Re: Bekomme immer Fehlermeldung
*Pah* wie langweilig, da find ich die ganze (unnötige) Diskussion spannender :D
|
Re: Bekomme immer Fehlermeldung
Zitat:
|
Re: Access violation beim Löschen von Listview-Einträgen
"Fehlermeldung" ist wohl kaum ein aussagekräftiger Titel, ich habe ihn mal geändert. Beim nächsten Mal bitte selber drauf achten.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:45 Uhr. |
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