Das geht mal, leider habe ich den TMemoryStream in Verwendung, weil meine "Dateien" nicht wirklich aus dem Dateisystem stammen, sondern syntetisch entstehen (und auch zum Teil sehr groß sind).
Ich bin mir auch nicht sicher ob das ein Problem von THashSHA1 ist oder ob es nicht eher ein Compiler-Problem ist?
Soweit ich das jetzt sehe wird die "falsche" Update-Methode aufgerufen...
Mit
LSHA1.Update(TBytes(LFile.Memory), LFile.Size);
kann man die richtige Methode erzwingen ... aber so ein Hardcast an dieser Stelle ist doch extrem unschön?
Vergleich doch mal, ob LFile.Size und Length(TBytes(LFile.Memory)) exakt gleich groß sind.
Da hab ich jetzt irgendwie mit einen Auge Unterschiede beim Debuggen gesehen.
Alternativ TBytesStream verwenden? Dann mit LFile.Bytes (von Typ TBytes) übergeben?