Selekcja okreslonych danych

0

Czesc.
Jest taki problem.
Na liscie(powiedzmy TListbox) mam wpisane powiedzmy 36 nazw.
np:
Piotrek
Paweł
Grzesiek
Beata
Zosia
Asia
Beata
.
.
Paweł
Ania.
Jak zrobic zeby z tej listy przeniesc na inną listę(powiedzmy Listbox2) wszystkie imiona(niepowtarzające sie, czyli tutaj na 36 imion powinienem dostac liste zlozono z 7 Imion Piotrek,Paweł,Grzesiek,Beata,Zosia,Asia,Ania).
Mimo moich prób cały czas otrzymuje w drugiej liscie to co w pierwszej.
A robie tak:
Pobieram z Listbox1 pierwsze Imie do zmiennej(i wpisuje do listbox2).
Teraz w petli sprawdzam czy kolejne imiona w listbox1 so takie same jak to pierwsze.Jesli nie to laduje to na liste drugo.
I to nie chce dzialac, bo wczytuje mi uparcie calo liste. Jak to zrobic?
Moze cos wymyslicie, bo ja sie poddaje.
Pozdr, pepe

0

if ListBox2.Items.IndexOf(...) <> -1 then //d odaj

0

if ListBox2.Items.IndexOf(...) <> -1 then //d odaj

Czesc, dzieki, ale czy mozesz cos wiecej napisac, bo nie kapuje(byc moze dlatego ze mnie dzis leb boli :) ).
Bede wdzieczny, czesc

0

Nie wiem jak masz zapisane co jest imieniem a co nie jest... załóżmy, że imiona to zbiór "set of", w instrukcji warunkowej w pętli sprawdzasz:

if (ComboBox2.iItems.IndexOf(ComboBox1.Items[i]) <> -1) and ([ComboBox1.Items[i]] in Imiona) then //dodaj

Nie jestem tylko pewny co do poprawności zapisu sprawdzenia czy element należy do zbioru Imiona... może nawiasy pomylilem.. ale już chyba sobie poradzisz co ?

0
var
i : integer;
begin
  for i := 0 to listbox1.Items.Count - 1 do
     if listbox2.Items.IndexOf(listbox1.Items[i]) = -1
     then listbox2.Items.Add(listbox1.Items[i]);
end;
0

Racje, " = -1 " , pomyłka moja... :)

0

Czesc.
Działa. [hurra]
Dzięki wszystkim.
Ps: Szkoda tylko, ze sam na to nie wpadlem, choc wieczorem wpadl mi to glowy pomysl jak to zrobic, no ale moj sposob zajol 2 razy wiecej pisania.
Pozdr,pepe

1 użytkowników online, w tym zalogowanych: 0, gości: 1