uses IdHashMessageDigest, IdHashCRC;
{ 取文件MD5码 来自别的blog}
function GetFileMD5(const iFileName: string): String;
var
MemSteam: TMemoryStream;
MyMD5 : TIdHashMessageDigest5;
begin
MemSteam := TMemoryStream.Create;
MemSteam.LoadFromFile(iFileName);
MyMD5 := TIdHashMessageDigest5.Create;
Result := MyMD5.HashStreamAsHex(MemSteam);
MyMD5.Free;
MemSteam.Free;
end;
//计算文件CRC,稍微改造了一下。
function CalcFileCRC(FileName: string): Integer;
var
MemSteam: TMemoryStream;
MyCRC : TIdHashCRC32;
sCrc:string;
begin
MemSteam := TMemoryStream.Create;
MemSteam.LoadFromFile(FileName);
MyCRC := TIdHashCRC32.Create;
sCrc := MyCRC.HashStreamAsHex(MemSteam);
Val('$' + sCrc, Result, Result);
MyCRC.Free;
MemSteam.Free;
end;
// 直接传入文件路径即可
例子:
Memo1.Lines.Add(Format('%s'#9'%s'#9'%u', [ExtractFileName(Filename), GetFileMD5(Filename), LongWord(CalcFileCRC(Filename))]));