Wenn du schreibst PAnsiChar(), macht Delphi intern nicht immer einen reinen Cast, sprich es passiert beim Cast auf AnsiString auch eine entsprechende Umwandlung (Compiler Magic). Das passiert aber nicht (oder jedenfalls nicht immer, ich dachte das schon mal gesehen zu haben), wenn es schon ein AnsiString ist:
Die darin aufgerufenen Funktionen sehen so aus:
Delphi-Quellcode:
procedure _LStrFromUStr(var Dest: _AnsiStr; const Source: UnicodeString; CodePage: Word);
function _LStrToPChar(const S: _AnsiStr): _PAnsiChr;