Question

Dans une version dll avec Delphi 2006

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

Dans un exécutable construit avec Delphi 2010

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

Entrer dans le dll, aLigne = '123'. En fait une chaîne que je passe est coupé exactement en deux.

1.) Pourquoi mon littéral une réduction de moitié? 2.) Comment puis-je résoudre ce problème?

Était-ce utile?

La solution

Assurez-vous que le paramètre _foo est un WideString en 2010

Autres conseils

WideStrings résident dans tas Windows et ne sont pas gérés par le gestionnaire de mémoire Delphi. Alors WideStrings (contrairement à d'autres types de chaîne longue) peuvent être partagées entre EXE et DLL sans problème.

Je suppose que vous obtenez des données erronées, car WideString est un type géré et le gestionnaire de mémoire pour le dll et l'exécutable sont différents. Si vous pouvez recompiler le dll faire le type aLigne être PWideChar

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top