【问题标题】:Delphi Dll - more than one Form / unit in one dllDelphi Dll - 一个 dll 中的多个表单/单元
【发布时间】:2012-07-22 15:52:42
【问题描述】:

我现在没有使用 dll 的经验。 我的应用程序由几个程序组成,这些程序有几个表格和单元。现在我想把它们都“放在一起”。 这意味着,我希望有一个登录名,可以从 dll 中调用这些单独的程序。

由于程序本身有多个单元,我的问题是,是否可以将多个表单/单元放入一个 DLL 中。 (一个完整的程序) 然后我可以将程序称为 dll。

到目前为止,程序是分开运行的,它们之间没有依赖关系。在它们内部有级联表单(Form1 调用 Form2 或 form3 或 ...)。 如果无法将它们全部放在一个 dll 中,我可以级联 dll(即调用 dll 1 dll1 调用 dll 2)吗?

我通过 IBDac 使用 Delphi 2007 / XE 和 Firebird 2.x

TIA

【问题讨论】:

  • 考虑使用 bpl 包而不是 dll。您还可以使用您的组件创建设计时包并将它们安装到您的 IDE 中。在此处阅读有关 bpls 的更多信息:edn.embarcadero.com/article/27178
  • 据我所知,bpl 和 dll(在 delphi 世界中)在某种意义上是可以互换的,在决定使用它们中的哪一个之后,我可以对它们做同样的事情吗? (其他语言的调用函数除外)
  • 您不需要 DLL。只需将所有代码包含在一个程序中即可。
  • 好吧,DLL 和 EXE 中的 TObject 将是两个不同的类。所有“as”和“is”运算符都将不起作用。没有类型安全。制作函数Somefunction(参数:字符串):TObject;并将其称为 var-string := SomeFunction (2+2, 3.5 + 3.5, Tform)。容易地。任何随机结果。如果您不太了解汇编程序,无法理解 DLL 和 BPL 之间的区别,那么请不要使用 DLL。

标签: delphi dll


【解决方案1】:

请注意,DLL 和 EXE 中的 Application 对象实例是分开的。您必须将 Application.Handle 从 Exe 传递给您的 DLL 并进行设置。否则,您将在 Windows 任务栏上获得单独的应用程序按钮。

【讨论】:

  • 谢谢,我不会知道的。
【解决方案2】:

是的,您可以在 DLL 中放置任意数量的单元。就像在任何其他 Delphi 项目中一样,这些单元可以有与之关联的表单,也可以不关联。

【讨论】:

  • 所以 DLL 和其他项目一样吗?从 dll 开始,我可以在 dll 中创建整个应用程序吗?除了我需要一个启动应用程序?
  • 是的,用户,完全正确。您可以导出一个函数,然后宿主应用程序可以调用它。 (例如,Python 编程语言就是这样做的。)出于您的目的,BPL 可能更合适,因为它可以更轻松地在主机程序和外部模块之间共享 Delphi 特定的功能,但请记住您提出的问题询问的是 DLL 的功能,而不是完成特定任务的最佳方式。
【解决方案3】:

如果没有任何特定原因使用 DLL(例如能够从其他编程语言调用/编写它们),您应该考虑改用包。

您可以将任意数量的单元和表格放入一个包中,但请注意单元名称必须是唯一的:您不能加载包含相同单元的多个包(但您可以将这些单元放入一个单独的包中,以便使用通过多个包)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    相关资源
    最近更新 更多