Das ist aber doch unnötig kompliziert, oder? (auch eine Art von Code-Obfuscation)
Delphi-Quellcode:
fbytes := TEncoding.GetEncoding('UTF-16').GetBytes(fToHash);
fSize := TEncoding.GetEncoding('UTF-16').GetByteCount(fToHash);
Warum nicht gleich so?
Delphi-Quellcode:
fbytes := TEncoding.GetEncoding('UTF-16').GetBytes(fToHash);
fSize := Length(fBytes);
Oder so?
Delphi-Quellcode:
fbytes := TEncoding.Unicode.GetBytes(fToHash);
fSize := Length(fBytes);
Wobei der ByteCount von
Unicode auch wieder nur
CharCount * SizeOf(Char)
ist. TEncoding.Default ist von den aktuellen Windows-Einstellungen abhängig, also eher ungünstig. Etwas sparsamer und trotzdem allgemein gültig wäre da noch UTF8:
Delphi-Quellcode:
fbytes := TEncoding.UTF8.GetBytes(fToHash);
fSize := Length(fBytes);
Wenn die Hashes auch anderweitig verwendet werden, muss sowieso das Encoding bekannt gemacht werden. Sonst kann niemand was damit anfangen.