WideString problème de compatibilité dans Delphi
-
20-09-2019 - |
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?
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