CheckListBox Eintrag löschen
-
Hi Leude,
kurze frage.
Wie kann ich einen ausgewählten eintrag aus einer checkListBox löschen?Habe folgendes probiert:
void __fastcall TForm1::wegClick(TObject *Sender) { for (int i=0; i<CheckListBox->Items->Count; i++) { if (CheckListBox->Checked[i]) { CheckListBox->Items->RemoveAt[i]; } } }Jetzt kommt folgender fehler mit dem ich nichts anfangen kann:
[C++ Fehler] Test1.cpp(186): E2235 Elementfunktion muß aufgerufen oder ihre Adresse übernommen werdenDanke Bench
-
ich bekomm eher die Fehlermeldung
[C++ Fehler] Unit1.cpp(24): E2316 'RemoveAt' ist kein Element von 'TStrings'da Items vom Typ TStrings ist, solltest du die Funktion Delete verwenden
was steht denn in Zeile 186?
-
Hi ,
sorry, habe schon Delete statt RemoveAt verwendet und da kommt die oben ganannte Fehlermeldung!!
Weisst du warum?
danke Bench
-
Mit Delete bekomme ich keine Fehlermeldung.

for (int i=0; i<CheckListBox1->Items->Count; i++) { if (CheckListBox1->Checked[i]) { CheckListBox1->Items->Delete(i); } }
-
Hallo,
das ist keine property sondern eine Funktion.
Gruß
Alexander
[Edit]Bezog sich auf die vor-vorherige Nachricht[/Edit]
-
upps so solls sein.
for (int i=0; i<CheckListBox1->Items->Count; i++) { if (CheckListBox1->Checked[i]) { CheckListBox1->Items->Delete(i--); } }
-
Hallo,
beim Löschen würde ich empfehlen rückwärts zu iterieren.
for (int i = CheckListBox1->Items->Count - 1; i >= 0; --i)Gruß
Alexander
-
Alexander Kempf schrieb:
Hallo,
beim Löschen würde ich empfehlen rückwärts zu iterieren.
for (int i = CheckListBox1->Items->Count - 1; i >= 0; --i)Gruß
Alexander
Ist aber bei dieser Gegebenheit nicht umbedingt erforderlich.
-
zwitch schrieb:
Ist aber bei dieser Gegebenheit nicht umbedingt erforderlich.
Was ist schon unbedingt erforderlich?
Aber bevor es philosophisch wird...
Für mich ist ein Rückwärtsiterieren aus zwei Gründen empfehlenswert:1. Das ist gängige Praxis (soweit ich das überschauen kann).
2. Man sollte nicht innerhalb einer for-Schleife den Schleifenparameter verändern.
Das führt zu schlechterer Lesbarkeit und damit zu Verwirrungen und letztlich möglicherweise Fehlern.Natürlich ist das hier sehr überschaubar, aber:
1. Der Code kann noch wachsen.
2. Der Mensch ist ein Gewohnheitstier...Gruß
Alexander
-
Hi,
ok jetzt gehts.
Habe statt Delete(i--) Delete[i] gehabt!
da hat er wegen der klammer gamault!!!Ich danke Bench
-
Alexander Kempf schrieb:
beim Löschen würde ich empfehlen rückwärts zu iterieren.
Dem möchte ich mich anschließen...
Bench_XProjects schrieb:
Habe statt Delete(i--) Delete[i] gehabt!
da hat er wegen der klammer gamault!!!Aber auch nur wegen der Klammer. Das i-- ist ein post-operator, das heißt i wird erst nach Abschluß der Funktion dekrementiert.