ShareMem / string-Delchanging与Delphi DLL

时间:2009-12-13 18:17:20

标签: delphi dll delphi-2007

快速的我希望 - 我正准备深入研究一个Delphi 5遗留应用程序,该应用程序调用DLL(也用D5编写),传递DLL可以根据需要修改的字符串。

我有DLL和应用程序的代码。粘贴在DLL源代码顶部的是关于使用ShareMem的注释,它需要是项目的uses子句中的第一行等。

如果我将这一切移植到D2007,是否有更好的(或更现代的)方式来获取Delphi应用程序与Delphi DLL共享字符串数据? D5 ShareMem的东西是否仍适用于Delphi 2007应用程序(使用FastMM等)?我还没有重新编译整个事情的bash - 只是想知道这一点是否会成为一个问题,是否有替代/推荐的方法这样做?

FWIW,DLL完全是第一方(它仅由这个特定的应用程序使用 - 所以在D2007下重新编译它也不会有问题。)

3 个答案:

答案 0 :(得分:7)

要使用D2007附带的FastMM,请将SimpleShareMem用作应用程序和DLL项目中的第一个单元。

或者从SourceForge下载完整的FastMM4,在FastMM4Options.Inc(ShareMM,ShareMMIfLibrary,AttemptToUseSharedMM)中设置Flags,并将FastMM4作为应用程序和DLL项目中的第一个单元。

答案 1 :(得分:3)

仅使用FastMM4。 FastMM4是一款优秀的内存管理器,可自动包含类似ShareMem的解决方案! FastMM4与D5兼容!

答案 2 :(得分:0)

您需要 sharemem 的原因是,当传递给 dll 时,指向 ansistrings 的引用会中断。一种解决方案是: -

如果您能够将字符串限制为 shortstring ,那么您可以省去sharemem。我已经写了二十几个dll,主要是硬件的驱动程序,我没有必要使用sharemem一次。