質問

デルファイ2006でのDLLのビルドには

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

デルファイ2010内蔵実行可能で

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

DLL、aPath = '123' にステッピング。実際に私が合格し、任意の文字列は正確に半分に切ります。

1。)なぜ私は文字通り半減されていますか? 2.)私はそれを修正する方法を教えてください。

役に立ちましたか?

解決

_FOOパラメータは、2010年にはWideStringになっていることを確認します。

他のヒント

WideStringsは、Windowsのヒープに存在し、Delphiのメモリマネージャによって管理されていません。だから、(他の長い文字列のタイプとは異なり)WideStringsは問題なくexeファイルとDLLの間で共有することができます。

私はWideStringには、マネージ型とDLLのメモリマネージャと実行可能であるので、あなたが間違ったデータを取得したと異なっています。 あなたは、DLLを再コンパイルすることができた場合はPWideChar型であることをaPathタイプを作る

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top