![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Алгоритм сравнения файлов.
DevilDevil © (2007-01-25 01:34:00)Вопрос: существует ли какой-нибудь быстрый способ сравнения файлов... точнее нахождения всех общих цепочек байт?
по моему естественно:
1) оба файла надо сначала занести в память
2)
function EqualBytes(P1, P2 : pointer; MaxLength : DWORD) : DWORD;
asm
push esi
push edi
mov esi, eax
mov edi, edx
{} mov edx, ecx
shr ecx, 2
jz @normecx
Repe cmpsd
je @normecx
mov ecx, 3
sub esi, 4
sub edi, 4
jmp @cmpbytes
@normecx:
mov ecx, edx
and ecx, 3
jz @Exit
@cmpbytes:
Repe cmpsb
je @exit
dec esi
@Exit:
sub eax, esi
neg eax
pop edi
pop esi
end;
Германн (2007-01-25 01:45:00) [21]
>
> DevilDevil © (25.01.07 01:34)
>
> Вопрос: существует ли какой-нибудь быстрый способ сравнения
> файлов... точнее нахождения всех общих цепочек байт?
Тут обязательно нужно ограничиться какими-то "осмысленными" критериями. нахождения всех общих цепочек байтслишком общо и практически не подлежит алгоритмизации.
Даже TotalCommander -> "Сравнить файлы по содержимому"от весьма уважаемого мною Christian Gislerне всегда работает так, как это мненужно.