مشكلة توافق الازداع في دلفي
-
20-09-2019 - |
سؤال
في بناء DLL مع دلفي 2006
Foo(aPath: widestring);
begin
_rootPath := aPath;
end;
في منفذ قابل للتنفيذ مع دلفي 2010
_Foo := GetProcAddress(FooModule,’Foo’);
_Foo(‘123456’);
يخطو إلى DLL، Apath = '123'. في الواقع، يتم قطع أي سلسلة تمرير بالضبط في النصف.
1.) لماذا تنخفض الحرفي إلى النصف؟ 2.) كيف يمكنني إصلاحه؟
المحلول
تأكد من أن المعلمة _foo عبارة عن تردد في عام 2010
نصائح أخرى
Widestrings موجودة في كومة Windows ولم يتم إدارتها بواسطة Delphi Memory Manager. يمكن مشاركة Widestrings (على عكس أنواع السلسلة الطويلة الأخرى) بين EXE و DLL دون مشاكل.
أفترض أنك تحصل على بيانات خاطئة لأن Widestring هو نوع مدار ومدير الذاكرة ل DLL ويمكن التنفيذ مختلفا. إذا كنت تستطيع إعادة ترجمة DLL جعل نوع Apath ليكون pwidechar
لا تنتمي إلى StackOverflow