Entwickler-Ecke

Sonstiges (Delphi) - Löschproblem


sunday_2 - Fr 15.11.02 14:39
Titel: Löschproblem
Hi,

ich habe folgendes Problem: Ich möchte den Inhalt einer ComboBox löschen. Allerding weiß ich vorher nicht wieviel Einträge sie hat. Ich habe folgenden Code eingegeben.

Quelltext
1:
2:
3:
for i:=0 to 26 do
            begin
            combobox_zahl.items.Delete(i);

Nun wird allerdings immer nur die Hälfte der Einträge gelöscht. ????
Woran liegt das???


wwerner - Fr 15.11.02 15:02

weil wenn i 14 ist es keine 14. Element mehr gibt?


Keldorn - Fr 15.11.02 15:04

Hallo

Bsp: ide Liste enthält: Item0,Item1,Item2,Item3,Item4

Damit löschst du im ersten durchlauf item0
Dann steht in der liste Item1,Item2,Item3,Item4,...
Dann erhöhst du den durchlaufzähler um 1 auf 1 und löschst damit item2
damit überspringste immer einen eintrag
Usw ...

Lösung: in der Schleife bei delete nicht I, sondern eine feste Zahl einsetzen (0), hilfreich ,wenn du nicht alle, sondern nur eine bestimmte anzahl löschen willst.
oder mal die methode clear von items anschauen

edit: du solltest auch in der schleife eher combobox.items.count-1 verwenden

Mfg Frank


sunday_2 - Fr 15.11.02 15:15

Danke!

:lol:


Udontknow - Fr 15.11.02 16:24

Zusatz: Manchmal löscht man ja auch noch nach bestimmten Kriterien (z.B: jedes ungerade Element löschen). Dann ist es sinnvoll, einfach die Schleife rückwärts durchzugehen:


Quelltext
1:
2:
for i:=Items.Count-1 downto 0 do 
  if i mod 2=0 then Items.delete(i)


Cu, :)
Udontknow