Keine Doppelten einträge bei der ListBox zulassen.
-
Ich habe eine Listbox mit Einträgen (hehe Logisch), und möchte aber Verhindern,
dass doppelte Einträge sich in meine ListBox einschleichen, wie kann ich
das am Besten machen
-
Hi
recht einfach:
void __fastcall TForm1::Button1Click(TObject *Sender) { CheckForDoobleItems(ListBox1->Items); } //--------------------------------------------------------------------------- void __fastcall TForm1:: CheckForDoobleItems(TStrings* Liste) { for(int i=0;i<Liste->Count;i++) for(int k=i;k<Liste->Count;k++) if(Liste->Strings[i]==Liste->Strings[k]) Liste->Delete(k); }
-
Hallo,
warum nicht gleich vor dem eintragen eines neuen Items checken ob ´
vielleicht schon da ist.Ich habe vollgendes verwendet:
bool exist=false; AnsiString Neu="xyz"; // for(int i=0; i<ListBox1->Items->Count; i++) if(Neu==ListBox1->Items->Strings[i]) exist=true; // if(!exist) ListBox1->Items->Add(Neu);
-
if (ListBox1->Items->IndexOf(text) == -1) { ListBox1->Items->Add(text); }
-
Nur aufpassen, TStrings::IndexOf ist nicht case sensitive.
-
Stimmt... es lässt sich allerding mit einem einfachen zweiten if-zweig fesstellen ob es sich wirklcih um ein identisches Exemplar handelt (-;
-junix
-
Stimt, so gehts natürlich dann auch
-
Nur aufpassen, TStrings::IndexOf ist nicht case sensitive.
Äh, wo steht das? In der Hilfe nicht.....
Stimmt... es lässt sich allerding mit einem einfachen zweiten if-zweig fesstellen ob es sich wirklcih um ein identisches Exemplar handelt (-;
Wenn TStrings::IndexOf wirklich nicht case sensitive ist, dann klappt das nicht, da immer nur der erste String gefunden wird. Wenn du den String ABC in der Liste hast und mit IndexOf("abc") ABC findest, hast du Pech gehabt. Da hilft dann nur noch eine Schleife....
-
Äh, wo steht das? In der Hilfe nicht.....
In der Hilfe vom BCB6 stehts explizit drinnen. In früheren Versionen glaube ich nicht, hatte damals nämlich aufgrund dessen schon "Fehler" gesucht wie ein Depp
-
das klappt bei mir auch nicht....
*grummel*
weiß nicht weiter, weil ich das auch brauche....
-
...fragt sich WAS genau nicht klappt?
-junix
-
Habe 1 ListBox und wenn das Form Blatt geladen wird, holt sich die ListBox die Daten aus ner Datei, aber genau in der Datei stehen Einträge doppelt drinne und das geällt mir nicht, wenn die dauernd 4 oder 5 mal angezeigt werden!!
Deswegen, alle doppelten Items sollen gelöscht werden.
ItemsVergleich kann ich doch nur bei 2 ListBoxen machen oder? Also da hänge ich eben....
-
Geh in einer Zählschleife die einzelnen Items durch und prüfe per IndexOf, ob ein gleichnamiges Item bereits höher in der Liste steht. Pseudocode:
... if (IndexOf(aktuellesItem) >= 0 && IndexOf(aktuellesItem) < aktuellerZähler) Delete(aktuellesItem); ...
-
ich habe das nun so...
int i = 0; int k = 0; for(i=0; i <ListBox1->Count; i++) for(k=0; k <ListBox1->Count; k++) if(ListBox1->Items->Strings[i]==ListBox1->Items->Strings[k]) { ListBox1->Items->Delete(k); } else { MessageBeep(50); }
allerdings, wenn ich zweimal draufdrücke löscht der mir auch die restlichen Einträge... also alle..
-
ich habs....
ich hhate das ausversehen in OnActivate und in OnClose...sorry mein Fehler...DANKE erstmal an alle *küsschen*
-
*küsschen*
lass so einen schweinekram das nächste mal. sowas brauchen WIR hier nicht. wir sind doch hier nicht im flirt-forum. programmierer brauchen keine liebe.
-
Aber wenn das Programm mit Liebe programmiert wurde, stürzts nicht so oft ab :D:D:D