[Delphi] Porównywanie elementów w TListBox

0

Hey, kminie, kminie i nie moge ;) potrzebuje kodu, ktory porownuje zawartosc jednego listbox (listbox1) i drugiego (listbox2) i jezeli jest taki sam wpis w obu to usuwa go z pierwszego (listbox1). Juz robilem co moglem i nie mam juz pomyslow ;/

0
procedure TForm1.Button1Click(Sender: TObject);
var
  i, j: integer;
begin
  for i:=0 to listbox2.Count-1 do
  begin
    j:=0;
    while j<listbox1.Count do
    begin
      if listbox1.Items.Strings[j]=listbox2.Items.Strings[i] then
      listbox1.Items.Delete(j);
      j:=j+1;
    end;
  end;
end;  

Pozdrawiam
paweld

0
  1. Przepisujesz zawartosc listbox1 do jakiegos TStringList
  2. jedziesz po elementach listbox2 i jesli dany element z listbox2 wystepuje w tym stringlist, to go usuwasz (byc moze musisz uwzglednic wielokrotne wystapienia elementu ?)
  3. po zakonczeniu iterowania po listbox2 usuwasz zawartosc listbox1 i wstawiasz tam zawartosc Twojego TStringList
0

kodzilem i wykodzilem sam, ale troszeke z inna zasada. Jezeli znajdzie duplikat to nie usowa z listbox1 tylko dodaje ten wpis do listbox3, kod:

for i:=0 to form1.ListBox1.Items.Count-1 do
        begin
            for j:=0 to form1.ListBox2.Items.Count-1 do
              begin

                if form1.ListBox1.Items.Strings[i]=form1.ListBox2.Items.Strings[j]
                    then
                      begin
                          form1.ListBox3.Items.Add(form1.ListBox1.Items.Strings[i]);
                      end;


              end;


        end;

Dzieki wieskie za szybka pomoc ;) temat do zamkniecia ;)

0

A ja bym zrobił tak:

  for i:= ListBox1.Items.Count - 1 downto 0 do
   for j:= 0 to ListBox2.Items.Count - 1 do
     if ListBox1.Items[i] = ListBox2.Items[j] then ListBox1.Items.Delete(i);

Zdążyłem przed zamknięciem ;-)

0

teraz zauwazylem, ze wczesniejsza wersja moich kodow rowniez dzialala, tylko trzeba bylo uzyc DOWN TO a nie TO x)

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