These are my "lightweight" external functions. To make full use of them (eg for scanning word docs etc) you'll need Mike Skolniks SMWord component and Synapse plus the word generator, text filter extensions I've already posted.
for Cntr := 0 to sl1.Count - 1 do begin
idx := MaxInt;
while idx > -1 do begin
idx := sl.IndexOf(sl1[Cntr]);
if idx > -1 then sl.Delete(idx);
end;
end;