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.