【问题标题】:Delphi plugin frameworkDelphi 插件框架
【发布时间】:2011-04-01 12:55:07
【问题描述】:

我想设计 Delphi 插件框架。共有三个选项:
1. DLL
2. BPL
3. COM接口

每个选项都有一些缺点。

DLL - MDI 应用程序出现问题,来自插件的表单无法嵌入到主机 exe - mdi 应用程序。
BPL - 每个 *.bpl 插件和 *.exe 宿主应用程序必须使用相同版本的 Delphi 编译。
COM - 接口 {xxx-xx-xxx-xx} 必须在系统中注册,(regsvr) 所以插件框架不能移植!

我上面写的一切都是真的吗?如果不是,请纠正我,或者还有其他可能吗?
谢谢

【问题讨论】:

  • COM接口不是需要注册的。如果您知道实现 DLL 在哪里,您可以加载它并直接调用它的 COM 相关函数。无需让操作系统为您执行此操作。这使得它在两者的意义上都具有可移植性:您可以在其他操作系统上编译代码,也可以将程序放在 USB 驱动器上并随时随地运行。
  • 我只阅读了几篇关于 COM 接口的文章。不过,从他们那里,所有的 COM 接口都必须在系统中注册。我需要可移植的应用程序,因此我拒绝了 COM 编程。但看起来,它是可以移植的。谢谢。我必须更深入地研究 COM 技术;)

标签: delphi com dll interface bpl


【解决方案1】:

是的,你写的是正确的。所有这些都有优点和缺点,问题是对你来说什么是重要的,你没有说你想做什么,所以我们不能告诉你怎么做。

一般情况下,我会默认选择 BPL,如果您需要从非 Delphi 应用程序中使用它,则使用 DLL,并且仅在您确实需要时选择 COM。

另一种选择是不要自己构建,因为有几个可用的 Delphi 插件框架。

另外,这个话题之前已经在这里讨论过,请查看:

【讨论】:

    【解决方案2】:

    另一种可能性是有一个脚本接口,例如PythonPascalscript。这种方法有很多优点,尤其是插件源也是可执行文件,便于调试和共享。

    【讨论】:

      【解决方案3】:

      我会看看 Remobjects 的 Hydra

      另一个候选人是PaxCompiler(脚本)和EControl Form Designer(表单设计师)的组合。

      【讨论】:

        【解决方案4】:

        我们使用 DLL,即使仅与 Delphi 应用程序一起使用也是如此。 Dll 窗体嵌入在主窗体中,并使用 Tabs 而不是 MDI。 为了使 DLL 正常工作,我们还使用共享内存管理器并使用运行时包构建:vcl、rtl 和我们自己的包。

        【讨论】:

        • 是的,有一些解决方法可以解决“无法将 TFont 分配给 TFont”的错误,并且可以将 *.dll 中的 TFrame 放入主机 *.exe 应用程序中,但选项卡还有其他一些问题使用嵌入的 TFrame 进行排序,(按 Tab 键后,焦点不会移动到框架中的下一个控件...)或者是否也有一些解决方法?
        • 另外,箭头键也不会被表单拦截,这意味着 TEdit 和 TMemo 控件无法正常工作。
        【解决方案5】:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-09-02
          • 1970-01-01
          • 2011-03-30
          • 2011-08-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-17
          相关资源
          最近更新 更多