AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Items aus ListBox löschen!

Ein Thema von mo_greene · begonnen am 17. Jun 2008 · letzter Beitrag vom 17. Jun 2008
Antwort Antwort
mo_greene

Registriert seit: 10. Dez 2006
Ort: Berlin
136 Beiträge
 
Turbo Delphi für Win32
 
#1

Items aus ListBox löschen!

  Alt 17. Jun 2008, 14:48
Hallo,

ich würde gerne alle leeren Items aus meiner ListBox löschen, jedoch kann es sein, dass diese zu der Zeit, wo die Prozedur aufgerufen wird, total leer ist.
Folgendes habe ich mir überlegt:

Delphi-Quellcode:
  if ListBox.Count >= 1 then
  begin
    for i := 0 to ListBox.Count do
    begin
      if ListBox.Items.Strings[i] = 'then
      begin
        ListBox.Items.Delete(i);
      end;
    end;
  end;
Leider bekomme ich eine Meldung: Exception der Klasse EStringListError mit der Meldung 'Listenindex überschreitet das Maximum(16)'.

Woran kann das liegen?

Danke
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Items aus ListBox löschen!

  Alt 17. Jun 2008, 14:53
Beim Löschen, immer von oben, da sonst die Grenze nie erreicht wird, da nach Löschen des ersten, der 2. den Index 0 bekommt. Oder immer den 1. Löschen.
In diesem Fall könntest du auch ListBox1.Clear; aufrufen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Items aus ListBox löschen!

  Alt 17. Jun 2008, 14:55
2 Sachen:
1. Die Schleife muss rückwärts laufen, also nicht for..to sondern for..downto.
Sagen wir mal, die ListBox hat 10 Einträge. Wird jetzt einer gelöscht, sind es nur noch 9, die Schleife läuft trotzdem bis 10 durch.
2. Muss es so heißen:for i := 0 to ListBox.Count - 1 do Da es bei 0 anfängt, ist das letzte Element Count - 1

Mfg

[Edit]
Zitat von mkinzler:
In diesem Fall könntest du auch ListBox1.Clear; aufrufen.
Zitat von mo_greene:
ich würde gerne alle leeren Items aus meiner ListBox löschen
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
mo_greene

Registriert seit: 10. Dez 2006
Ort: Berlin
136 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Items aus ListBox löschen!

  Alt 17. Jun 2008, 14:58
Ich habe es jetzt so gemacht

Delphi-Quellcode:

  if ListBox.Count >= 1 then
  begin
    for i := ListBox.Count downto 0 do
    begin
      if ListBox.Items.Strings[i] = 'then
      begin
        ListBox.Items.Delete(i);
      end;
    end;
  end;
Leider bekomme ich immernoch die gleiche Fehlermeldung
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Items aus ListBox löschen!

  Alt 17. Jun 2008, 14:59
for i := ListBox.Count-1 downto 0 do
Markus Kinzler
  Mit Zitat antworten Zitat
mo_greene

Registriert seit: 10. Dez 2006
Ort: Berlin
136 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Items aus ListBox löschen!

  Alt 17. Jun 2008, 15:05
Klasse, vielen Dank!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Items aus ListBox löschen!

  Alt 17. Jun 2008, 18:29
Hallo,

für den Eingangstest hast du gar keine Erklärung geliefert.

Delphi-Quellcode:
procedure DeleteItems(s: TStrings; const item: string = '');
var
  i: Integer;
begin
  s.BeginUpdate;
  try
    for i := Pred(s.Count) downto 0 do
      if s[i] = item then
        s.Delete(i);
  finally
    s.EndUpdate;
  end;
end;
Getippt und nicht getestet.

Grüße vom marabu
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Items aus ListBox löschen!

  Alt 17. Jun 2008, 18:33
Zitat von mo_greene:
Klasse, vielen Dank!
Schalte zum programmieren die Bereichsprüfung in deinem Projekt an und du wärst vom Programm mit der Nase drauf gestossen worden...
  Mit Zitat antworten Zitat
mo_greene

Registriert seit: 10. Dez 2006
Ort: Berlin
136 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Items aus ListBox löschen!

  Alt 17. Jun 2008, 18:54
Zitat von Muetze1:
Schalte zum programmieren die Bereichsprüfung in deinem Projekt an und du wärst vom Programm mit der Nase drauf gestossen worden...
Wie schalte ich die ein?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: Items aus ListBox löschen!

  Alt 17. Jun 2008, 19:01
Projekt -> Optionen -> Compiler -> Bereichsprüfung
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:13 Uhr.
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