![]() |
Überprüfen ob zwei Dateien gleich sind
Hallo,
hiermit kann man prüfen ob zwei Dateien gleich sind.
Delphi-Quellcode:
Grüsse, Daniel :hi:
function CompareFiles(const sFileName1, sFileName2: String): Boolean;
var ms1, ms2: TMemoryStream; begin Result := False; ms1 := TMemoryStream.Create; try ms1.LoadFromFile(sFileName1); ms2 := TMemoryStream.Create; try ms2.LoadFromFile(sFileName2); If ms1.size = ms2.size Then Result := CompareMem(ms1.Memory, ms2.memory, ms1.size); finally FreeAndNil(ms2); end; finally FreeAndNil(ms1); end end; procedure TForm1.Button1Click(Sender: TObject); begin if Opendialog1.Execute then begin if Opendialog2.Execute then begin if CompareFiles(Opendialog1.FileName, Opendialog2.FileName) then ShowMessage('Die Dateien sind gleich...') else ShowMessage('Die Dateien sind ungleich...'); end; end; end; |
Re: Überprüfen ob zwei Dateien gleich sind
Zusatz von unserem User "
![]() 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:
Andererseits bieten sich jedoch auch noch einige bekannt Hash-Verfahren wie SHA1, CRC32, CRC64, MD4, MD5 usw. an. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz