Dann war aber was noch Anderes falsch
, denn
* Delphi 1 bis 2007 : PChar = PAnsiChar
* seit Delphi 2009 : PChar = PWideChar
Zufällig funktioniert es, wenn man im Delphi als
IN-Parameter (const) statt PAnsiChar einen AnsiString verwendet, denn intern ist der Delphi-String Binärkompatibel mit PAnsiChar, damit beim Cast
PAnsiChar(EinAnsiString)
praktisch nichts gemacht werden muß.
Das gilt aber nur für Lesezugriffe.
Bei manuellen Header-Übersetzungen nutze ich manchmal gern solch ein Verhalten aus, um die Schnittstellen dann im Programm einfacher (delphi-typischer) nutzen zu können.
String statt PChar zwar nicht so oft, wie es möglich wäre, aber z.B. ein VAR- oder OUT-Parameter statt eines Pointers.