No debería de haber ningún problema por usar funciones dentro de una dll.
Lo que si es mala idea es devolver un puntero (PAnsiChar) a un string que no existe fuera de la función. Es decir una vez finalizada la función StringToPAnsiChar el puntero que devuelve apunta a una dirección de memoria indeterminada, no a la cadena de texto que le pasas como parámetro a la función.
Para que te hagas una idea de lo que pasa al llamar a la funcion StringToPAnsiChar
- Llamas a la función pasandole una cadena como parámetro
- Dentro de la función se reserva memoria para guardar ese texto
- La función devuelve un puntero a esa memoria
- La función al terminar libera esa memoria que tenia reservada
- Ahora el puntero apunta a una posición de memoria que no esta en uso