Forum: Programmieren allgemein
by Uwe Raabe,
16. Jan 2018
Das ist aber doch unnötig kompliziert, oder? (auch eine Art von Code-Obfuscation)
fbytes := TEncoding.GetEncoding('UTF-16').GetBytes(fToHash);
fSize := TEncoding.GetEncoding('UTF-16').GetByteCount(fToHash);
Warum nicht gleich so?
fbytes := TEncoding.GetEncoding('UTF-16').GetBytes(fToHash);
fSize := Length(fBytes);
Forum: Programmieren allgemein
by Uwe Raabe,
16. Jan 2018
Aber sicher soll es das. Die meisten direkten Rückmeldungen und Optimierunsvorschläge erhalte ich übrigens für VP21, Delphi3 und TP6(!) Vielleicht auch bedingt dadurch, daß die Funktionen praktisch für alle Kompiler nutzbar sind.
.. oder weil die Benutzung durch neue Compiler unnötig umständlich ist?
Ich habe ja nicht behauptet, daß die bestehenden Methoden durch neue ersetzt werden sollen....
Forum: Programmieren allgemein
by Uwe Raabe,
16. Jan 2018
Soll es ja auch gar nicht.
Das ist ja auch dein gutes Recht.
Eine weite Verbreitung ist aber nicht wirklich ein Qualitätsmerkmal. Der oben angesprochene Fehler ist doch ein ziemlich eindeutiges Indiz.
Forum: Programmieren allgemein
by Uwe Raabe,
16. Jan 2018
Du hast vollkommen Recht: Length(bytes) wäre hier korrekt. Je nach Encoding ist die Länge der Bytes in der Regel kürzer als die vorher berechnete Size. Demnach haben wir hier einen klassischen Buffer-Overrun, wie er bei Pointer-Programmierung leider sehr häufig vorkommt. Damit werden auch unbestimmte Bytes mit in den Hash eingerechnet, die in den TBytes gar nicht vorkommen, sondern zufällig im...