Entwickler-Ecke

Dateizugriff - ...überprüfen ob zwei Dateien gleich sind?


Tino - Mi 29.10.03 13:25
Titel: ...überprüfen ob zwei Dateien gleich sind?
Um zu überprüfen ob zwei Dateien identisch sind kann die folgenden Funktion benutzt werden (Autor: toms [http://www.delphi-forum.de/profile.php?mode=viewprofile&u=29]). Die Funktion benutzt das TFileStream Objekt um die Dateien zu lesen. Mit Hilfe der Funktion CompareMem wird der Inhalt verglichen. Die Funktion gibt True zurück wenn der Inhalt der beiden Dateien gleich ist.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
function FilesAreEqual(const File1, File2: TFileName): Boolean;   
const   
  BlockSize = 65536;   
var   
  fs1, fs2: TFileStream;   
  L1, L2: Integer;   
  B1, B2: array[1..BlockSize] of Byte;   
begin   
  Result := False;      
  fs1 := TFileStream.Create(File1, fmOpenRead or fmShareDenyWrite);   
  try        
    fs2 := TFileStream.Create(File2, fmOpenRead or fmShareDenyWrite);   
    try        
      Result := fs1.Size = fs2.Size; 
      while Result and (fs1.Position < fs1.Size) do   
      begin   
        L1 := fs1.Read(B1[1], BlockSize);   
        L2 := fs2.Read(B2[1], BlockSize);   

        Result := L1 = L2; 
        if Result then 
          Result := CompareMem(@B1[1], @B2[1], L1);   
      end;   
    finally   
      fs2.Free;   
    end;   
  finally   
    fs1.Free;   
  end;   
end;