Hallo ATwardz
Also ein Hash ist ein eindeutiger Wert für eine Datei oder einen String oder ähnliches. Es gibt verschiedene Alogrithmen welche diesen Hash-Wert aus der Datei erzeugen (
MD5, SHA... oder dein SimpleHash). Es ist sehr unwahrscheinlich das zwei verschiedene Dateien denselben Hash ergeben. Zudem ist die ganze Sache nur in eine Richtung machbar. Also vom Hash-Wert lässt sich die Quelle nicht erzeugen aber ein und dieselbe Quelle ergibt immer den selben Hash-Wert.
Um nun Dateien zu vergleichen gibts eben zwei Möglichkeiten:
1. Du vergleichst die Dateien Bit für Bit (so wie bei deiner Funktion AreFilesEqual)
2. Du vergleichst den Hash-Wert der Dateien.
Die Hash-Werte kannst du natürlich in einer Tabelle speichern damit die Werte nicht jedesmal neu aus den Dateien gebildet werden müssen. Der Hash-Algo braucht natürlich auch eine gewisse Zeit (abhängig vom Algo) aber meist weniger als ein BinaryCompare.
Hash-Algos für Delphi findest du z.B. hier:
http://www.cobans.net/hashlib.html
Ich hoffe das hilft dir soweit.