|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.09.2010, 00:15 | #1 |
Пользователь
Регистрация: 13.09.2010
Сообщений: 65
|
Сравнить два текстовых файла
Есть 2 текстовых файла (1.txt , 2.txt)
1.txt: C:\Assch C:\boot.ini C:\CONFIG.SYS 2.txt: C:\Assch C:\AUTOEXEC.BAT C:\boot.ini C:\Bootfont.bin C:\CONFIG.SYS C:\IO.SYS Можно ли на ассемблере сделать функцию которая прочитала бы эти 2 файла нашла изменения и создала бы файл 3.txt в котором бы прописала изменения то есть добавленные строчки вот так 3.txt: C:\AUTOEXEC.BAT C:\Bootfont.bin C:\IO.SYS В этих файлах очень мало строк просто для понятия смысла. Функция нужна очень быстрая так как ей придётся сравнивать текстовые файлы где не меньше 20000 строк. Есть програмка кажется DiffText называется она сравнивает, и выдаёт результаты изменения практически мгновенно. Вопрос к знатокам: Можно ли подобную функцию сделать на старом добром ассемлере. |
23.09.2010, 01:50 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
отвечаю на вопрос, можно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
23.09.2010, 01:55 | #3 |
Пользователь
Регистрация: 13.09.2010
Сообщений: 65
|
Спасибо за обнадёживающий ответ
Не подскажете как ? |
23.09.2010, 03:36 | #4 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
assch
а зачем писать на ассемблере, когда в командной строке можно набрать: "fc /b 1.txt 2.txt > 3.txt" сравнить по-символьно файлы 1.txt и 2.txt результат вывести в 3.txt |
23.09.2010, 08:02 | #5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А если оч хоцца на ассемблере то мона попробовать запустить указанную выше команду функцией system из msvcrt.dll
I'm learning to live...
|
23.09.2010, 10:34 | #6 |
Форумчанин
Регистрация: 15.06.2010
Сообщений: 740
|
Как вариант чтобы не изобретать велосипед просто взять исходники команды fc из мс-доса. Она на ассемблере написана )
Чтобы понять рекурсию, сперва нужно понять рекурсию.
|
23.09.2010, 13:47 | #7 |
Пользователь
Регистрация: 13.09.2010
Сообщений: 65
|
Функция fc 1.txt 2.txt > 3.txt не подходит, то есть она подойдёт, но только
в том случае если произошли не большие изменения. Эта функция создаёт файл отчёта не больше 64кб (я узнавал мне сказали что это функция наследие досовских времён по этому не больше 64кб) Если произошли большие изменения то файл отчёта она бонально обрежет (я уже проверял к сожалению так оно и есть) Вот если как тут предложили взять исходник и дополнить эту функцию то может быть что то и получится Но к сожелению такими знаниями не обладаю. Я писал что програмка кажется DiffText называется, с такой задачей справляется мнгновенно, но как выдернуть от туда эту функцию? |
23.09.2010, 13:54 | #8 |
Форумчанин
Регистрация: 15.06.2010
Сообщений: 740
|
Под какую ос нужна программа? DOS или же Виндовс? Если в виндовс - не проблемма выделять сразу огромные буферы под файл и сравнивать все что нужно. В дос придется гемороится с выделением-освобождением памяти и чтением каждый раз в нее сравниваемого файла.
Чтобы понять рекурсию, сперва нужно понять рекурсию.
|
23.09.2010, 14:01 | #9 |
Пользователь
Регистрация: 13.09.2010
Сообщений: 65
|
Виндовс
Это нужно для того чтобы выявить изменения в файловой системе Делаешь снимок скажем папки Program Files потом ставишь какую нибудь программу Делаешь второй снимок Сравниваешь и получаешь список добавленных файлов как это делает скажем ТоталЮнистал Не поможете? |
23.09.2010, 14:12 | #10 |
Форумчанин
Регистрация: 15.06.2010
Сообщений: 740
|
Я очень фигово знаю winapi, поэтому написать это на ассемблере для меня будет тяжело. Написать такое на любом другом языке - не проблема. Я вот ,к примеру, всякие мелкие win32 утилиты пишу на Virtual Pascal. Я не думаю, что скорость будет сильно различаться между чистым ассемблером и любым высокоуровневым языком. В любом случае саму процедуру сравнения файлов можно сделать ассемблерной вставкой.
Чтобы понять рекурсию, сперва нужно понять рекурсию.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как быстро сравнить два похожих файла? | myza | Microsoft Office Excel | 8 | 26.08.2010 08:59 |
Сравнить два множества. Pascal | MaxMelnikov | Помощь студентам | 3 | 16.03.2009 09:35 |
как в перле можно сравнить два файла? | menik | Помощь студентам | 1 | 23.02.2009 10:16 |
Помогите пожалуйста сравнить два столбца | ddimma | Microsoft Office Excel | 4 | 16.01.2009 09:01 |
Сравнить два файла | Aleksandr | Microsoft Office Excel | 6 | 07.10.2008 00:22 |