Zusatz von unserem User "merovingian":
In dem Beitrag werden die Dateien nur in einen Stream geladen und der Größe verglichen. Dabei wir der Inhalt aber nicht überprüft. Mit dieser Funktion wird beides berücksichtigt:
Delphi-Quellcode:
function CompareFiles(const SrcPath1,SrcPath2:String):Integer;
var File1,File2:TFileStream;
lCnt:Integer;
Buff1,Buff2:Byte;
begin
try
try
Result:=0
File1:=TFileStream.Create(SrcPath1,fmOpenRead or fmShareExclusive);
File2:=TFileStream.Create(SrcPath2,fmOpenRead or fmShareExclusive);
if File1.Size = File2.Size then
begin
for lCnt:=0 to (File1.Size-1) do
begin
File1.ReadBuffer(Buff1,1);
File2.ReadBuffer(Buff2,1);
if Buff1<>Buff2 then
begin
Result:=1;
Exit;
end;
end;
end
else
begin
Result:=1;
Exit;
end;
except
Result:=-1;
end;
finally
File1.Free;
File2.Free;
end;
end;
Zitat:
Ergebnisse der Funktion:
0 -> Die Datein sind gleich
1 -> Die Datein sind ungleich
-1 -> Es ist ein Fehler aufgetreten
----------------------------------------------------------------------------------------------------
Andererseits bieten sich jedoch auch noch einige bekannt Hash-Verfahren wie SHA1, CRC32, CRC64, MD4, MD5 usw. an.
Daniel R. Wolf
mit Grüßen aus Hamburg