Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

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

01.01.2007
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; 

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