Pregunta

En una acumulación DLL con Delphi 2006

Foo(aPath: widestring);
begin
  _rootPath := aPath;
end;

En un ejecutable generado con Delphi 2010

_Foo := GetProcAddress(FooModule,’Foo’);
_Foo(‘123456’);

Al entrar en la DLL, Apath = '123'. De hecho cualquier cadena que pase se corta exactamente por la mitad.

1.) ¿Por qué mi literal que se reduce a la mitad? 2.) ¿Cómo lo arreglo?

¿Fue útil?

Solución

Asegúrese de que el parámetro es un _foo widestring en 2010

Otros consejos

WideStrings residen en Windows montón y no son gestionados por el gestor de memoria de Delphi. Así WideStrings (a diferencia de otros tipos de largo de cuerda) pueden ser compartidos entre exe y dll sin problemas.

Supongo que recibes datos erróneos debido WideString es un tipo administrado y el administrador de memoria para el archivo DLL y el ejecutable es diferente. Si puede volver a compilar el archivo DLL que tipo Apath ser PWideChar

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top