Es muss ja irgend etwas mit der Referenzzählung des Strings sein, denn durch Einführen einer zusätzlichen Variable funktioniert es ja wieder.
Deshalb ja meine Frage in #7.
Bei dem Aufruf
MapAndLoad(PAnsiChar(asAnsi)...
wird implizit _LStrToPChar aufgerufen. Wenn Du über die zusätzlichen Variable mit
asPAnsiChar := Addr(asAnsi[1]);
gehst, dann wird _LStrToPChar nicht benutzt.
Ich vermute, wenn Du statt
asPAnsiChar := Addr(asAnsi[1]);
wieder
asPAnsiChar := PAnsiChar(asAnsi);
benutzen würdest, kracht es wieder. Denn dann wird wieder _LStrToPChar aufgerufen. Das würde dann zeigen, dass es nicht an der zusätzlichen Variablen liegt, sondern am Aufruf von _LStrToPChar.