2013-04-08 51 views
1

有没有使用dwscript作为Delphi应用程序的插件框架的方法?例如,我在dwscript中添加了一个简单的方法,该方法增加了数字,这需要从托管应用程序中调用。使用dwscript作为Delphi应用程序的插件框架

一种解决方案是将dwscript作为文本文件保留并在运行时加载文本文件并从主机调用该方法。有没有办法创建一个包含dwscript的dll,并在运行时加载dll,然后调用该方法?

回答

1

应该没有问题,但你应该先来看看如何管理内部德尔福DLL插件,因为... ethere有一些限制:

检查delphi.about.com有一些教程。 http://delphi.about.com/od/windowsshellapi/a/dll_basics.htm

你会首先发现的问题之一是你可能有类的问题,因为一个DLL就像一个独立的应用程序,所以它创建自己的类表。所以对于主机应用程序,包含在dll中的TDWScript类包含它所包含的类(主机)。

有一些方法可以acomplish这一点,那要看你有什么需求:

1) 例如,您可以调用DLL的方法,而不是直接调用TDWscript类,只是打电话一样“ExecuteScript的方法( afilename)”

2)如果你的插件需要与主机应用程序是MROE复杂的相互作用,因为你必须嘱咐通信协议,双方(主机和插件可以互动)

的选项是: a)使用接口而不是clas直接。 b)使用内存管理器,如sharemem(delphi附带)或fastMM4(开放源代码),它应该包含在bot DLL和APP中,这样它们将共享相同的内存管理器和相同的类表。

如果您不熟悉插件,请检查JEDI VCl组件,他们有一个JvPlugin和JvPluginManager,它是一个简单但功能强大的框架,可以开始创建自己的Plugin框架。有一些演示如何管理插件,使用DLL方式创建它们。这对你想要的可能是有用的。并演示如何使用接口而不是直接使用类。

2

DWS不会创建DLL。它将一个pascal风格的源代码编译为中间文件以供执行,以便您可以根据需要将文本文件部署为插件。有关回调DWS源代码下载并在DWS站点的tools目录中运行IDE演示的示例,此示例有一个“执行过程”菜单选项和简单的源代码来查看它是如何完成的。

+0

谢谢,这很有用。 – rhody 2013-04-08 19:52:14