![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 18.04.2012
Сообщений: 12
|
![]()
Товарищи, есть вопрос:
есть 2 текстовых файла, по 10 мегабайт как максимально быстро сравнить строки этих файлов с выводом результата в третий файл? т.е. "файл 1": а1 б1 в1 "файл 2": а1 б2 в1 в "файл 3" тогда будет записано б2 на данный момент делаю так: Код:
если "файл 1" = 8мб, а "файл 2" = 1мб, то обработка занимает больше часа... На intel core i3 с 4гб Последний раз редактировалось artemavd; 24.04.2012 в 07:14. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]()
Загрузить оба файла как бинарные, сравнить в памяти, сформировать образ выходного файла в памяти, вывести файл на диск как бинарный.
Это все займет менее секунды. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 18.04.2012
Сообщений: 12
|
![]()
а поподробнее ??
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
раз уже есть привязка к тому что он текстовый(строки), то кроме как построчно не получится никак.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Почему? Любые данные можно рассмотреть как набор байт.
Главное привести TXT к одной кодировке, иначе побайтное стравнение будет бессмысленно и беспощадно. Если не хотите хардкора, то TFileStream,TMemoryStream вам в помощь. Если же хотите дейтвительно разобраться, и даже сделать быстрее, то начинка выше упомянутых классов вам в помощь. |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
Человек_Борща, придется искать границы строк, из низ образуя блоки для сравнения.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
зачем? Это же байты!
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
вот именно, что БАЙТЫ. А в исходной задачи нужно сравнивать СТРОКИ!
Вы исходное условие внимательно читали? например, первый файл: sss dd bb второй файл sss ggggggggggggg bb программа сравнения должна (по мнению TC) выдать в третий файл ggggggggggggg А что выдаст ваше побайтовое сравнение?! p.s. я бы взял обычные TStringList, загрузил туда исходные файлы и банально в цикле сравнивал! 10Мб - это детский сад! Правда, в задачах нахождения отличия между текстовыми файлами есть ряд нюансов, учитывать их или нет зависит от TC (точнее от задачи, которую он решает). |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
не всяк байт символом является.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#10 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,427
|
![]()
Если задачка "для себя", то можно попробовать воспользоваться программой comp (win+r -> cmd -> comp /? для просмотра синтаксиса).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сравнение данных в текстовых файлах | zhukovms | Помощь студентам | 34 | 05.09.2011 11:58 |
ОБРАБОТКА текстовых файлов | Kirillnd | C++ Builder | 2 | 31.07.2011 16:40 |
Обработка текстовых файлов. | kolobot | Помощь студентам | 2 | 15.12.2010 21:14 |
копирование текстовых файлов | teacher | Общие вопросы Delphi | 4 | 16.02.2008 20:29 |
Сравнение текстовых файлов | BR17UY | Общие вопросы Delphi | 15 | 07.05.2007 20:18 |