Текущий архив: 2006.02.12;
Скачать: CL | DM;
ВнизПобайтовое сравнение файлов Найти похожие ветки
← →
XeON © (2006-01-22 15:30) [0]Доброго всем времени суток. Народ, подскажите пожалуйста, как мне побайтово сравнить 2 файла? А затем результат сравнения (номер байта и сам байт) куда-нибудь записать (например в тип Record)? Пробовал через BlockRead - не получается...
← →
Lamer@fools.ua © (2006-01-22 15:36) [1]>Пробовал через BlockRead - не получается...
И как именно не получается?
← →
Desdechado © (2006-01-22 15:41) [2]fc файл1 файл2 /b >результат
← →
Zeqfreed © (2006-01-22 16:51) [3]XeON © (22.01.06 15:30)
function AreFilesEqual(const fn1, fn2 : String) : Boolean;
var
f1, f2 : Integer;
fs1, fs2 : Cardinal;
r1, r2, toread, read1, read2 : Integer;
buf1, buf2 : array[0..10239] of Byte;
begin
Result := false;
f1 := FileOpen(fn1, fmShareDenyNone);
f2 := FileOpen(fn2, fmShareDenyNone);
fs1 := GetFileSize(f1, nil);
fs2 := GetFileSize(f2, nil);
read1 := 0;
read2 := 0;
if (fs1 = fs2) then begin
repeat
toread := Min(fs1 - read1, SizeOf(buf1));
r1 := FileRead(f1, buf1, toread);
r2 := FileRead(f2, buf2, toread);
read1 := read1 + r1;
read2 := read2 + r1;
if (r1 <> toread) or (r2 <> toread) or (not CompareMem(@buf1, @buf2, toread)) then Exit;
until ((read1 = fs1) and (read2 = fs2));
Result := true;
end;
FileClose(f1);
FileClose(f2);
end;
Вроде все правильно написал ;)
← →
Fay © (2006-01-23 09:19) [4]2 Zeqfreed © (22.01.06 16:51) [3]
(r1 <> toread) or (r2 <> toread)
не говорит о различии файлов.
Страницы: 1 вся ветка
Текущий архив: 2006.02.12;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.046 c