Ich habe das jetzt mal so gelöst. Ich bin von TStringStream weg, da es hier als Masochismus betitelt wurde.
Leider aber wieder hin zu AnsiString. Mit String bekomme ich nur Salat als Ergebnis.
Es funktioniert, aber es ist bestimmt nicht perfekt.
Delphi-Quellcode:
SetLength(s, aFileStream.Size - (32 * SizeOf(Byte)));
aFileStream.Read(s[1], Length(s));
s:= THashFunctions_Selftest.CalcHash(s);
Result := s;
Das Problem mit dem hohen Speicher bekomme ich leider nicht weg, da ich das SetLength nicht einfach weglassen kann
Es ist mehr als einmal erwähnt worden, daß der HASH nicht über Chars/Strings/Text gebildet wird, sondern über die in der Datei enthaltenen Bytes.
du kannst natürlich eine String-Struktur als Aufbewahrungsort Deiner Bytes verwenden aber das schein mir hier so sinnvoll wie sich ein Loch in die Kniescheibe zu bohren und Marmelade hinein zu schmieren, machen kann man viel wenn der Tag lang ist.
Zitat:
Das Problem mit dem hohen Speicher bekomme ich leider nicht weg, da ich das SetLength nicht einfach weglassen kann
Wenn Du viele Daten auf einmal verarbeiten willst, dann benötigst Du auch viel Speicher. Das "SetLength" ist nur ein Symptom Deiner Datenverarbeitung.
Gruß
K-H