Einzelnen Beitrag anzeigen

Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Überprüfen ob zwei Dateien gleich sind

  Alt 2. Jan 2004, 18:59
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
  Mit Zitat antworten Zitat