Hola,
Algunas funciones, efectivamente, requieren que sus parámetros sean "PChar", pero, si estamos tratando de cadenas... es posible entregar cadenas tal cual:
Código Delphi
[-]
Foo('parametro1', 'parametro2');
Y, cuando, como en tu caso, cuentes con "strings" que hayas de pasar a una función que requiera parámetros "PChar", basta con lo siguiente:
Código Delphi
[-]
Foo(PChar(parametro1), PChar(parametro2));
Es decir, las cadenas y los "PChar" son en realidad lo mismo, excepto que el compilador puede quejarse si una función requiere "PChar" y se entrega un "string". Pero, como has visto, basta con "promocionar" el "string" a "PChar".