[Delphi] Porównywanie elementów w TListBox

[Delphi] Porównywanie elementów w TListBox
m1esh
  • Rejestracja: dni
  • Ostatnio: dni
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 ;/

  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
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

LN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1398
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
m1esh
  • Rejestracja: dni
  • Ostatnio: dni
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:

Kopiuj
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 ;)

SI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 184
0

A ja bym zrobił tak:

Kopiuj
  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 ;-)

m1esh
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.