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.