Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Ein Eintrag aus einer Listbox entfernen (https://www.delphipraxis.net/168591-ein-eintrag-aus-einer-listbox-entfernen.html)

smart 29. Mai 2012 23:34

Ein Eintrag aus einer Listbox entfernen
 
Hallo
ich wollte einen Eintrag aus einer ListBox entfernen. bekomme aber immer die Fehlermeldung: maximaler Index.....

Delphi-Quellcode:
 if ListBox1.Selected[i] = True then
       ListBox1.Items.Delete(i);
Wieso klappt der Code nicht.

Luckie 29. Mai 2012 23:39

AW: Ein Eintrag aus einer Listbox entfernen
 
Liegt er in einer Schleife und läuft die Schleife vorwärts? Also das sagt mir jetzt so meine Glaskugel. Lass die Schleife mal rückwärts laufen, dann sollte es gehen.

Bjoerk 29. Mai 2012 23:40

AW: Ein Eintrag aus einer Listbox entfernen
 
Versuch' mal so:

Prüfung auf true ist nicht schön und eventl. den Index überprüfen

Delphi-Quellcode:
  if I > -1 then
    if I < ListBox1.Items.Count then
      if ListBox1.Selected[I] then
        ListBox1.Items.Delete(I);
Gruß
Thomas

madtom 29. Mai 2012 23:44

AW: Ein Eintrag aus einer Listbox entfernen
 
Ich habe meinen Delphi Rechner gerade nicht an, aber mal ins Blaue Geräten:

ListBox1.Items[i].Delete;

Bjoerk 29. Mai 2012 23:49

AW: Ein Eintrag aus einer Listbox entfernen
 
ListBox1.DeleteSelected;

smart 30. Mai 2012 00:00

AW: Ein Eintrag aus einer Listbox entfernen
 
Zitat:

Zitat von Bjoerk (Beitrag 1168656)
Versuch' mal so:

Prüfung auf true ist nicht schön und eventl. den Index überprüfen

Delphi-Quellcode:
  if I > -1 then
    if I < ListBox1.Items.Count then
      if ListBox1.Selected[I] then
        ListBox1.Items.Delete(I);
Gruß
Thomas

OK die Fehlermeldung ist weg, aber jetzt wird auch nichts mehr gelöscht.

Luckie 30. Mai 2012 00:03

AW: Ein Eintrag aus einer Listbox entfernen
 
Zeig doch mal etwas mehr Code. So könne wir nur raten, was du da machst.

smart 30. Mai 2012 00:06

AW: Ein Eintrag aus einer Listbox entfernen
 
Zitat:

Zitat von Luckie (Beitrag 1168665)
Zeig doch mal etwas mehr Code. So könne wir nur raten, was du da machst.

Delphi-Quellcode:
procedure TForm12.RbButton4Click(Sender: TObject);
var
  i: Integer;
 begin
  if I > -1 then
     if I < ListBox1.Items.Count then
       if ListBox1.Selected[I] then
         ListBox1.Items.Delete(I);
 end;
mehr Code habe ich nicht.

BUG 30. Mai 2012 00:12

AW: Ein Eintrag aus einer Listbox entfernen
 
Zitat:

Zitat von smart (Beitrag 1168664)
OK die Fehlermeldung ist weg, aber jetzt wird auch nichts mehr gelöscht.

Das würde bedeuten, das dein Index nicht in den richtigen Grenzen liegt.

Kein Wunder:
Delphi-Quellcode:
I
wird nie initialisiert, kann also jeden beliebigen Wert haben.
Welchen Eintrag willst du denn löschen?

Zitat:

Zitat von Bjoerk (Beitrag 1168656)
und eventl. den Index überprüfen

Dann aber lieber mit Exception oder zumindest Assert.
Sonst passiert genau das, was eben passiert ist: Nichts geht mehr und keiner weiß warum.

EDIT: Glaskugel an!
Delphi-Quellcode:
procedure TForm12.RbButton4Click(Sender: TObject);
var
  i: Integer;
 begin
  for i := ListBox1.Items.Count - 1 downto 0 do
       if ListBox1.Selected[i] then
         ListBox1.Items.Delete(i);
 end;

Bjoerk 30. Mai 2012 00:19

AW: Ein Eintrag aus einer Listbox entfernen
 
#5 geht auch für MultiSelected. :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:55 Uhr.
Seite 1 von 2  1 2      

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