Einzelnen Beitrag anzeigen

Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Listboxeninhalte vergleichen

  Alt 10. Mär 2004, 10:10
Hallo,
habe gerade mal schnell hingeschrieben
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  iCnt : Integer;
  Tmp : TstringList;
  Counter : Integer;
begin
  Tmp:=TstringList.Create;
  Try
    For iCnt:=0 to ListBox1.Items.Count-1 do
      begin
      If Tmp.IndexOf(ListBox1.Items[iCnt])<>-1 then // Wenn Eintrag vorhanden
        begin
        Counter:=Integer(Tmp.Objects[Tmp.IndexOf(ListBox1.Items[iCnt])]); // Zähler holen
        Inc(Counter); // Zähler um 1 erhöhen
        Tmp.Objects[Tmp.IndexOf(ListBox1.Items[iCnt])]:=TObject(Counter); // Zähler wieder speichern
        end
          else // Wenn Eintrag nicht vorhanden
            begin
            Counter:=1; // Zähler mit 1 initialisieren
            Tmp.AddObject(ListBox1.Items[iCnt],TObject(Counter)); // Eintrag und Zähler speichern
            end;
      end;
    For iCnt:=0 to ListBox2.Items.Count-1 do
      begin
      If Tmp.IndexOf(ListBox2.Items[iCnt])<>-1 then
        begin
        Counter:=Integer(Tmp.Objects[Tmp.IndexOf(ListBox2.Items[iCnt])]);
        Inc(Counter);
        Tmp.Objects[Tmp.IndexOf(ListBox2.Items[iCnt])]:=TObject(Counter);
        end
          else
            begin
            Counter:=1;
            Tmp.AddObject(ListBox2.Items[iCnt],TObject(Counter));
            end;
      end;
    For iCnt:=0 to ListBox3.Items.Count-1 do
      begin
      If Tmp.IndexOf(ListBox3.Items[iCnt])<>-1 then
        begin
        Counter:=Integer(Tmp.Objects[Tmp.IndexOf(ListBox3.Items[iCnt])]);
        Inc(Counter);
        Tmp.Objects[Tmp.IndexOf(ListBox3.Items[iCnt])]:=TObject(Counter);
        end
          else
            begin
            Counter:=1;
            Tmp.AddObject(ListBox3.Items[iCnt],TObject(Counter));
            end;
      end;
    For iCnt:=Tmp.Count-1 DownTo 0 do
      begin
      If Integer(Tmp.Objects[iCnt])<3 then //lösche alle Einträge die einen Counter <3 haben
        Tmp.Delete(iCnt);
      end;
    ListBox4.Items.Assign(Tmp);
  Finally
    Tmp.Free;
    end;
end;
Die Inhalte der ListBoxen werden nacheinander in eine TStringList geschoben.
In der Objects-Eigenschaft wird die Anzahl der gleichen Einträge erfasst.
D.h. in der TStringList steht kein Eintrag doppelt. Wenn ein Eintrag schon vorhanden ist,
wird der Wert in der Objects-Eigenschaft um 1 erhöht.
Angehängte Dateien
Dateityp: exe project1_169.exe (303,0 KB, 1x aufgerufen)
I come from outer space to save the human race
  Mit Zitat antworten Zitat