Delphi-Quellcode:
Type ThxMD5 = packed Record
Function Calc(Const Input: AnsiString): ThxMD5; Overload;
Function Calc(Const Input: WideString): ThxMD5; Overload;
Jupp, standardmäßig sind der Typ String und auch die Stringkonstanten ab Delphi 2009 als UnicodeString definiert,
welches natürlich Aufgrund der anderen binären Entsprechnung auch ein anderes Ergebnis liefert.
Delphi-Quellcode:
A := '123'; // A = AnsiString
S := MD5.Calc(A).asHexString;
S := MD5.Calc(AnsiString('123')).asHexString;
Einfach so den UnicodeString dann intern auf
Ansi zu mappen, nur damit es bei so einfachen Dingen keine Probleme gibt, ist leider keine Lösung, da dann ja eventuell Unicodeinformationen verloren gehen und der Hash eines UnicodeStrings dann falsch wäre.