![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте уважаемые форумчане!
Подскажите как можно сравнить два текстовых файлов на наличие повторений. Допустим в одном файле 1.txt записано: 3 1 4 1 2 2 3 2 4 2 5 2 6 2 1 3 2 3 3 3 4 3 5 3 6 3 1 4 2 4 3 4 4 4 В текстовом файле 2.txt записано: 2 1 3 1 1 2 4 3 2 4 3 4 4 4 5 5 6 5 В текстовом файле 1.txt необходимо убрать строки,которые совпадают со строками в 2.txt. Заранее благодарен за ответ! |
|
#2
|
||||
|
||||
|
Немного G-кода
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i, j: integer;
sl1, sl2, sl3: TStrings;
flg: boolean;
begin
sl1:= TStringList.Create;
sl2:= TStringList.Create;
sl3:= TStringList.Create;
sl1.LoadFromFile('1.txt');
sl2.LoadFromFile('2.txt');
for i := 0 to sl1.Count - 1 do
begin
flg:= true;
for j := 0 to sl2.Count - 1 do
if sl1.Strings[i] = sl2.Strings[j] then flg:= false;
if flg then sl3.Add(sl1.Strings[i]);
end;
sl1.Free;
sl2.Free;
sl3.SaveToFile('1.txt');
sl3.Free;
end; |
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
bloodmaster89 (22.10.2013)
| ||
|
#3
|
||||
|
||||
|
IndexOf() вместо второго цикла можно сделать.
|
|
#4
|
|||
|
|||
|
Хочу добавить, что задачу по сравнению очень больших текстовых файлов решать лучше с помощью Memory Mapped Files и сравнивать файлы побайтово (если ASCII кодировка и по два байта, если Unicode). Указанный выше способ большие файлы будет сравнивать очень долго и в StringList можно загрузить только 2Gb, а если процесс 32 битный, то получаем, грубо говоря, что можно сравнить два файла суммарный размер которых не более 2Gb.
|
|
#5
|
||||
|
||||
|
Ну раз пошла такая пьянка, то можно использовать мэппинг файлы.
|
|
#6
|
||||
|
||||
|
Цитата:
|
|
#7
|
|||
|
|||
|
Не ради наезда написал это, и дело не в том, что такая задача не была поставлена. Я сам не далеко ушел от новичка и в самом начале мне бы была полезна подобная информация, ею и поделился. Собственно, поэтому и написал Memory Mapped Files чтобы те, кому интересно, могли погуглить в целях общего развития.
|