Savant
03-05-2005, 20:11
Если честно, то я не знаю как это правильно называется, поэтому поясню на примере.
Файл 1 - исходный:
aaabbbcccddd
eeeeeeeeefff
Файл 2 - конечный:
abababcdcdcd
eeeeefffe
После прогона программы генерируется "отчет" об отличиях (по сути же скриптовые команды), например:
Position 2, rewrite : baba
Position 8, rewrite : dcdc
Position 20, rewrite : fff
Position 24, delete : 3
Этот "отчет" прилепляется (как ресурс) к маленькому модулю-патчеру, который понимает его формат и может производить те же операции с исходными файлами, "превращая" их в "конечные". Так вот, разыскивается подобный алгоритм или его прототип. Основная проблема в том, что сравниваться будут не текстовые, а чаще исполняемые файлы.
Предполагаю, что найденные мною подобные алгоритмы для текстовых файлов не подойдут для бинарных (пока не пробовал). Зато попытался написать свой алгоритм, кстати не очень успешно - часто где-то зацикливается и умеет применять только 3 команды (заменить, вставить, удалить), хотелось бы иметь еще переместить, копировать, заполнить последовательность и т.д.
Жду комментариев по проблеме.
Файл 1 - исходный:
aaabbbcccddd
eeeeeeeeefff
Файл 2 - конечный:
abababcdcdcd
eeeeefffe
После прогона программы генерируется "отчет" об отличиях (по сути же скриптовые команды), например:
Position 2, rewrite : baba
Position 8, rewrite : dcdc
Position 20, rewrite : fff
Position 24, delete : 3
Этот "отчет" прилепляется (как ресурс) к маленькому модулю-патчеру, который понимает его формат и может производить те же операции с исходными файлами, "превращая" их в "конечные". Так вот, разыскивается подобный алгоритм или его прототип. Основная проблема в том, что сравниваться будут не текстовые, а чаще исполняемые файлы.
Предполагаю, что найденные мною подобные алгоритмы для текстовых файлов не подойдут для бинарных (пока не пробовал). Зато попытался написать свой алгоритм, кстати не очень успешно - часто где-то зацикливается и умеет применять только 3 команды (заменить, вставить, удалить), хотелось бы иметь еще переместить, копировать, заполнить последовательность и т.д.
Жду комментариев по проблеме.