@Captnemo: irgendwie fällt es dir schwer die Listboxen loszulassen und nur in Listen zu denken.
Man kann Liste B von A abziehen indem man das Ergebnis in C schreibt oder man macht es so wie du quasi in-place:
Delphi-Quellcode:
// Berechne A=A-B
procedure SubstractStringsInplace(A,B:TStrings);
var
i:Integer;
begin
for i:=A.Count-1 downto 0 do
if B.IndexOf(A[i])>=0 then
A.delete(i);
end;
...
SubstractStringsInplace(Listbox1.Items, Listbox2.Items);
Und selbst wenn diese Procedure nur ein Einziges mal benützt wird, ist das Ergebnis doch besser lesbar und sogar schneller.
Schneller deswegen weil man nicht ständig auf die Listboxen zugreift, sondern mit den Items, also den TStrings-Objekten arbeitet.
Noch schneller würde es wenn man zusätzlich A.BeginUpdate & A.EndUpdate verwendet.
Auch kleine Funktionen/Proceduren sind wichtig und wertvoll!!