Сравнение файлов

Советы » Файлы » Сравнение файлов

function

CompareFiles(Filename1,FileName2:string

):longint; { Сравнение файлов возвращает номер несовпадающего байта, (байты отсчитываются с 1)или: 0 - не найдено отличий, -1 - ошибка файла 1 -2 - ошибка файла 2 -3 - другие ошибки } const

Buf_Size=16384; var

F1,F2:TFileStream; i:longint; Buff1,Buff2:PByteArray; BytesRead1,BytesRead2:integer; begin

Result:=0; try

F1:=TFileStream.Create(FileName1,fmShareDenyNone); except

Result:=-1; exit; end

; try

F2:=TFileStream.Create(FileName2,fmShareDenyNone); except

Result:=-2; F1.Free; exit; end

; GetMem(Buff1,Buf_Size); GetMem(Buff2,Buf_Size); try

if

F1.Size> F2.Size then

Result:=F2.Size+1 else

if

F1.SizeF1.Position) and

(Result=0) do

begin

BytesRead1 :=F1.Read

(Buff1^,Buf_Size); BytesRead2 :=F2.Read

(Buff2^,Buf_Size); if

(BytesRead1=BytesRead2) then

begin

for

i:= 0 to

BytesRead1-1 do

begin

if

Buff1^[i]< > Buff2^[i] then

begin

result:=F1.Position-BytesRead1+i+1; break; end

; end

; end

else

begin

Result:=-3; break; end

; end

; end

; except

Result:=-3; end

; F1.Free; F2.Free; FreeMem(Buff1,Buf_Size); FreeMem(Buff2,Buf_Size); end

;

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com