Es gibt verschiedene Einstellungen für TEncoding bzw. WideCharToMultiByte und standardmäßig gibt es keine Fehlermeldung, wenn es nicht passt.
https://www.delphipraxis.net/207225-...evexpress.html
Und die Bereichsprüfung kann hier nicht greifen, dass die Chars nicht einzeln im Delphi-Code von WideChar ins AnsiChar zugewiesen werden.
Bestes Beispiel:
UTF8Decode und seine Freunde geben einfach still und heimlich einen Leerstring zurück, wenn man man dort "ungültiges" UTF-8 reingibt.
Und standardmäßig werden eben
ungültige unpassende WideChars in ein '?' übersetzt, wenn es nicht passt. (bei den AutoCatst still und heimlich, da Rückgaben nicht geprüft werden)
Außerdem kann es sein, dass Combining-Chars zusammengefasst werden, aber zurück dann nicht wieder getrennt. Oder A mit Akzent wird in ein pures A übersetzt und zurück geht dann nicht mehr.
Aber hier kann man mit den passenden Optionen und Auswertung des Rückgabewertes entgegengewirkt werden.