solo que no se por que en ocasiones la dll me marca este error EinvalidPointer
No sé si sea el caso pero Delphi no maneja bien el paso de parámetros String en funciones de una DLL a no ser que se incluya la unidad ShareMem en la dll y en la aplicación. En su lugar puedes usar ShortString (máximo 255 caracteres).