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.