Porownianie wartości w listbox'ach

0

Witam, potrzebuje porównać liczby z pierwszego listboxa czy istnieją w drugim listboxie. Jeśli istnieje to wyświetlam daną liczbę w trzecim listboxie.

Działa porównywanie samych linijek (np. listbox1.items[1] = listbox1.items[1])

var
 l1,l2:integer;
 i:integer;
begin
 for i:=0 to (Listbox1.Count)-1  do
   begin
    l1:=strtoint(listbox1.Items[i])   ; // przypisanie zmiennej l1 liczby z listboxa1
    l2:=strtoint(listbox2.Items[i])   ;
       if l2<>l1 then //porownanie liczb w obu listboxach
       listbox3.Items.Add('not') //info ze liczby nie są takie same
       else
       listbox3.Items.Add(listbox1.Items[i]) //wyświetla liczbę która się powtórzyła
   end;
end;

Wszystko cacy jednak gdy zmieni się kolejność liczb to aplikacja juz nie działa poprawnie.

jak porównać po kolei najpierw item[0], potem item[1] w listbox1 z wszystkim itemami w listbox2?

0
Function Exists(Check: Integer): Boolean;
Var I: Integer;
Begin
 Result := False;
 For I := 0 To ListBox2.Items.Count Do
  if (ListBox2.Items[i] = IntToStr(Check)) Then
  Begin
   Result := True;
   Break;
  End;
End;

Użycie:

Var I: Integer;
Begin
For I := 0 To ListBox1.Items.Count Do
 if (Exists(ListBox1.Items[i])) Then
  ListBox3.Items.Add(IntToStr(I));
End;

O to chodziło ?
PS: Pisałem bez kompilatora, za wszystkie błędy przepraszam i obiecuję poprawę :D

0
 Function Exists(sCo:string): Boolean;
Var I: Integer;
Begin
 Result := False;
 For I := 0 To ListBox2.Items.Count-1 Do
  if (ListBox2.Items[i] = sCo) Then
  Begin
   Result := True;
   Break;
  End;
End;

Użycie:

Var I: Integer;
Begin
For I := 0 To ListBox1.Items.Count-1 Do
 if (Exists(ListBox1.Items[i])) Then
  ListBox3.Items.Add(ListBox1.Items[i]);
End; 

Lekka poprawka (chociaż też bez kompilatora). Chyba niepotrzebna jest podwójna konwersja str->int->str i długość listy była przesadzona.

0

<quote=zefir>

 Function Exists(sCo:string): Boolean;
Var I: Integer;
Begin
 Result := False;
 For I := 0 To ListBox2.Items.Count-1 Do
  if (ListBox2.Items[i] = sCo) Then
  Begin
   Result := True;
   Break;
  End;
End;

([Error] Unit1.pas(52): Undeclared identifier: 'Listbox2' )
Ok tylko jak zadeklarować w tej funkcji listboxa z formy?

0
var
  i: Integer;
  s: string;
begin
  for i:=0 to ListBox1.Items.Count - 1 do
  begin
    s:= ListBox1.Items.Strings[i];
    if (ListBox2.Items.IndexOf(s) > -1) then
      ListBox3.Items.Add(s);
  end;
end;

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