Получить хеш файла
Функция хеширование файла.
//проверка занят ли файл
function ApplicationUse (fName: string): boolean;
var
HFileRes: HFILE;
begin
Result := false;
if not FileExists (fName) then exit;
HFileRes := CreateFile (pchar (fName), GENERIC_READ or GENERIC_WRITE, 0, nil,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
Result := (HFileRes = INVALID_HANDLE_VALUE);
if not Result then CloseHandle (HFileRes);
end;
//хеширование
function MD5 (const fileName : string) : string;
var
idmd5 : TIdHashMessageDigest5;
fs : TFileStream;
hash : T4x4LongWordRecord;
begin
idmd5 := TIdHashMessageDigest5.Create;
if not ApplicationUse (fileName) then //если файл не занят
begin
fs := TFileStream.Create (fileName, fmOpenRead OR fmShareDenyWrite) ;
try
result := idmd5.AsHex (idmd5.HashValue (fs)) ;
finally
//fs.Free;
end;
FreeAndNil (fs);
FreeAndNil (idmd5);
//idmd5.Free;
end;
FreeAndNil (fs);
FreeAndNil (idmd5);
end;
Вызываем функцию
hash.Add (MD5 (‘путь к файлу+файл с расширением’));