Einzelnen Beitrag anzeigen

einbeliebigername

Registriert seit: 24. Aug 2004
130 Beiträge
 
Delphi XE8 Professional
 
#19

AW: 2 Textdateien vergleichen

  Alt 24. Sep 2020, 13:31
Hallo,

StringList1.Text=StringList2.Text
Sicher nicht die beste Wahl wenn die Dateien groß oder keine Textdateien sind.
Sicherlich nicht die beste Lösung des Problems, welche aber unter schon genannten Bedingungen noch akzeptabel ist. Aber auf alle Fälle unendlich mal besser als dieser Blödsinn:
Hash ermitteln und vergleichen MD5 oder sonstiges evtl. ?
System.Hash
Und folgender Algorithmus ist fehlerhaft.
Delphi-Quellcode:
uses
  WinApi.Windows, System.Hash;


// um Dateigrößen >4GB zu ermitteln
function GetFileSize(const aFilename: String): Int64;
var
  info: TWin32FileAttributeData;
begin
  Result := -1;
  if NOT GetFileAttributesEx(PWideChar(aFileName), GetFileExInfoStandard, @info) then
    Exit;
  Result := Int64(info.nFileSizeLow) or Int64(info.nFileSizeHigh shl 32);
end;

// von lxo aus Delphi-Praxis
function GetHashMD5(const Datei: String): String;
begin
  Result := THashMD5.GetHashStringFromFile(Datei);
end;

//beispiel, nur hier per editor... ungetestet
function IsEqualFile(const Datei1, Datei2: String): Boolean;
begin
  Result := ( (GetFileSize(Datei1) = GetFileSize(Datei2)) and (GetHashMD5(Datei1) = GetHashMD5(Datei2)) );
end;
Genauer gesagt liefert dieser nur beim Rückgabewert False ein korrektes Ergebnis. Der Rückgabewert True ist unbrauchbar, denn es fehlt noch der Byteweise Vergleich.
Mit freundlichen Grüßen, einbeliebigername.
  Mit Zitat antworten Zitat