Wieso? Das ist recht einfach. Die Deklaration stammt von MS und die arbeiten gerne mit Pointern.
AnsiString bzw. String sind in Delphi Pointer auf eine Pascal-/Delphi-spezifische Struktur, welche anders ist als die MS-PChar (PAnsiChar) Pointer.
Code:
PChar(String) -> Pointer auf das erste Byte des Strings, inklusive einer aufwendigen Kopieraktion.
Wenn der string garantiert nicht geändert wird, ist es besser mit
@String[1]
zu arbeiten.
...
...