Hola...
Si vas a pasar el nombre directamente no necesitas hacer el cast a
PChar.
Código Delphi
[-]
ShellExecute(Handle, nil, 'calc.exe', nil, nil, SW_NORMAL);
var
AppName: string;
begin
AppName := 'calc.exe';
ShellExecute(Handle, nil, PChar(AppName), nil, nil, SW_NORMAL)
end;
Saludos...