PChar darf man gern verwenden, wenn die "Funktion" wirklich dynamisch ist.
Delphi-Quellcode:
function Shellexecute(hWnd: HWND; Operation, FileName, Directory: PChar; ShowCmd: Integer): HINST;
stdcall;
external '
shell32.dll'
name {$IFDEF UNICODE}'
ShellExecuteW'
{$ELSE}'
ShellExecuteA'
{$ENDIF};
Aber grundsätzlich stimmt es schon, bei den meisten WinAPIs -> xxxA mit PAnsiChar, xxxW mit PWideChar und xxx mit PChar (wird in den C++-Headern auch so gemacht und die Delphi-Headerübersetungen selber machen das auch schon länger so)