Как вычислить CRC (контрольную сумму) для файла?

Previous  Top  Next

    
 

 

 

Code:

function GetCheckSum(FileName: string): DWORD;

var

F: file of DWORD;

P: Pointer;

Fsize: DWORD;

Buffer: array [0..500] of DWORD;

begin

FileMode := 0;

AssignFile(F, FileName);

Reset(F);

Seek(F, FileSize(F) div 2);

Fsize := FileSize(F) - 1 - FilePos(F);

if Fsize > 500 then Fsize := 500;

BlockRead(F, Buffer, Fsize);

Close(F);

P := @Buffer;

asm

    xor eax, eax

    xor ecx, ecx

    mov edi , p

    @again:

      add eax, [edi + 4*ecx]

      inc ecx

      cmp ecx, fsize

    jl @again

    mov @result, eax

  end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

ShowMessage(IntToStr(GetCheckSum('c:\Autoexec.bat')));

end;

 

©Drkb::03971

Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php