Код:
procedure ruz(fn, dupfn, nodupfn: string);
var
sl1, sl2, sl3: TStrings;
i, b, c: integer;
begin
sl1:= TStringList.Create;
sl2:= TStringList.Create;
sl3:= TStringList.Create;
sl1.LoadFromFile(fn);
sl2.Add(sl1[0]);
for i := 1 to sl1.Count-1 do
begin
c:= 0;
for b := 0 to sl2.Count-1 do
if sl1[i] = sl2[b] then c:= 1;
if c = 0 then sl2.Add(sl1[i]);
end;
for i := 0 to sl2.Count-1 do \\ С нуля здесь список должен крутиться
begin
c:= 0;
for b := 0 to sl1.Count-1 do
if sl2[i] = sl1[b] then inc(c);
if c = 1 then sl3.Add(sl2[i]);
end;
sl2.SaveToFile(dupfn);
sl3.SaveToFile(nodupfn);
sl1.Free;
sl2.Free;
sl3.Free;
end;
...
// Вызов
ruz('total.txt', 'dup.txt', 'nodup.txt');
Очепятка из-за копипасты, не заметил, исправьте у себя условия цикла