Autor Beitrag
sunday_2
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101


Delphi 7.0
BeitragVerfasst: Fr 15.11.02 13:39 
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.
ausblenden 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???

_________________
Gruß Sunday

... wer nicht fragt, bleibt dumm!!!
wwerner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 185



BeitragVerfasst: Fr 15.11.02 14:02 
weil wenn i 14 ist es keine 14. Element mehr gibt?

_________________
Gruß

Wolfgang

----------
zu hause ist es doch am schönsten
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Fr 15.11.02 14: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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101


Delphi 7.0
BeitragVerfasst: Fr 15.11.02 14:15 
Danke!

:lol:

_________________
Gruß Sunday

... wer nicht fragt, bleibt dumm!!!
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Fr 15.11.02 15: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:

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


Cu, :)
Udontknow