Показать сообщение отдельно
  #8  
Старый 22.10.2013, 04:43
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Sibay
Не ради наезда написал это, и дело не в том, что такая задача не была поставлена. Я сам не далеко ушел от новичка и в самом начале мне бы была полезна подобная информация, ею и поделился. Собственно, поэтому и написал Memory Mapped Files чтобы те, кому интересно, могли погуглить в целях общего развития.

Не сильно поможет. Все равно надо будет один из них загрузить в память. Если файлы действительно большие, то надо их отсортировать. Вот тогда можно обойтись малым объемом памяти. Хотя на диске все-равно будет много места занято, т.к. проидется создавать третий файл, содержащий результат.

А для маленьких файлов Alegun был на правльном пути. Вот мой вариант:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i : integer;
  sl1, sl2 : TStrings;
begin
  sl1:= TStringList.Create;
  sl2:= TStringList.Create;
  Try
    sl1.LoadFromFile('1.txt');
    sl2.LoadFromFile('2.txt');
    for i := sl1.Count - 1 downto 0 do
      if sl2.IndexOf(sl1[i]) >= 0 Then sl1.Delete(i);
    sl1.SaveToFile('1.txt');
  Finally
    sl1.Free;
    sl2.Free;
  End;    
end;