Zuerst nur mal die Dateigröße vergleichen.
(Nur hingedaddelt)
Delphi-Quellcode:
function CompareFileSize(FileA, FileB : wideString) : Boolean;
var
sr : TSearchRec;
SizeA : Int64;
SizeB : Int64;
begin
if FindFirst(FileA, faAnyFile, sr ) = 0 then
SizeA := Int64(sr.FindData.nFileSizeHigh) shl Int64(32) + Int64(sr.FindData.nFileSizeLow)
else
SizeA := -1;
FindClose(sr);
if FindFirst(FileB, faAnyFile, sr ) = 0 then
SizeB := Int64(sr.FindData.nFileSizeHigh) shl Int64(32) + Int64(sr.FindData.nFileSizeLow)
else
SizeB := -2;
FindClose(sr);
Result := SizeA = SizeB;
end;
Nur wenn dabei gleich rauskommt, könnten die Dateien auch inhaltlich gleich sein. Erst dann kann mit der MD5-Checksumme (oder eine andere Checksumme) festgestellt werden, ob die Dateien nun wirklich gleich sind oder nicht.
Die halbe Stunde Aufwand für die MD5-Checksumme ist also nur erforderlich, wenn Dateien gleicher Größe vorliegen.
Alternative: Mit 'ner ZIP-Komponente die Dateilisten der ZIP-Dateien auslesen und deren Inhalt vergleichen. Auch das wäre nur erforderlich, wenn die Dateien über die gleiche Dateigröße verfügen.