![]() |
Listboxeninhalte vergleichen
hi
ich habe 3 listboxen mit unterschiedlichen einträgen. einige einträge sind in allen 3 listboxen vorhanden und diese möchte ich bekommen. dachte mir, jeden eintrag aus listbox1 mit jedem aus listbox2 und listbox3 zu vergleichen. (ist lahm ich weiss, aber übergangsweise wirds gebraucht) ich bekomms einfach nicht hin wie ich die loops über alle 3 boxen machen soll. kann mir da jemand helfen? (sollte eigentlich nicht schwer sein, aber ich blick einfach nicht durch, hab mich verrannt...) gruss, dave |
Re: Listboxeninhalte vergleichen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
habe gerade mal schnell hingeschrieben
Delphi-Quellcode:
Die Inhalte der ListBoxen werden nacheinander in eine TStringList geschoben.
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; 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. |
Re: Listboxeninhalte vergleichen [gelöst]
hi jens
funktioniert prima!! vielen dank!! gruss, dave |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz