【问题标题】:What are the Delphi XE2 VCL Runtime BPLs?什么是 Delphi XE2 VCL 运行时 BPL?
【发布时间】:2011-12-21 22:56:41
【问题描述】:

旧的 Delphi 7,取消选中运行时包并构建所有技巧似乎不再起作用,所以我无法恢复任何适合我的 Delphi 项目的运行时 BPL 集。

我有一个问题,我可能会问另一个问题并在此处链接,我认为可以通过包含一个包含 VCL.CheckLst.pas 的特定 BPL 来解决这个问题。

我不知道这个问题的答案的原因是当我开始一个新的 VCL 表单项目时,默认情况下运行时包中没有 VCL BPL,有 RTL 和一些 firemonkey 的东西以及旧的 MadExcept 和 Indy,但是没有VCL,那是怎么回事?我的 Delphi 是否配置错误?

【问题讨论】:

  • 这是一个您不能通过文件系统搜索自己回答的问题吗?
  • 文件 -> 新包 -> 查看源代码:'rtl' 就在那里。 File -> New unit,插入'uses vcl.checklst;',IDE强制你添加'vcl'和'vclx'。
  • @rob 无法判断它们是运行时还是设计时 - 包括(或分发)设计时 BPL 毫无意义

标签: delphi vcl delphi-xe2 runtime-packages


【解决方案1】:

没有VCL.(注意. 后面的.)运行时包。有你以前习惯的标准RTL 包; VCL 命名空间包含在其中。

要准确了解您需要分发哪些运行时包,您可能会发现这很有用。

转到Project Options/Packages/Runtime Packages 对话框(下图帮助解释)。

展开Link with runtime packages节点,勾选True,并清除三个Value节点复选标记。您还可以打开Runtime packages 下面的节点并清除那里的三个条目的列表。保存更改并关闭对话框。 (IDE 将重新填充该列表并将其存储在 .dproj 文件中;如果在构建后重新打开 Project Options 对话框,您将看到它。)

使用Project|Build <yourproject>。构建完成后,使用Project|Information for <yourproject>;右侧面板将显示您需要分发的 BPL。 (VCL.CheckLstvc1x60.bpl 中,顺便说一句,根据下面 Sertac 的评论。)确保您构建而不只是编译;您需要确保重建所有 dcu,以便确定软件包列表。

【讨论】:

  • 只是为了确保我检查了 rtl160 和 vclx160 的导出。它在 vclx160.bpl 中。作为一个 api 控件,将它放入 rtl 也没有意义。
  • 糟糕。我认为你是对的(之前说得通)。它必须编译 VCL 的东西而不是使用包,因为我只指定了rtl160。不过,exe 仍然是 5MB。表单或组件没有拉入vcl160;我不知道为什么,但这一定是我的错误(像往常一样,不是你的)。回滚我的最后一次编辑并删除我的最后一条评论。谢谢,Sertac。
  • 不知道,这很令人困惑.. 将检查以仅放置“rtl”。 (我希望我通常是对的!)。
  • @Sertac:我还是很困惑。 就像我说的,在 XE2 中构建的新 VCL 应用程序并复制到仅安装了 D7 的 Win7 Virtual XP Mode VM,仅将 testapp.exertl160.bpl 复制到新文件夹中,有效。该应用程序运行没有任何错误,并且表单显示正确,CheckListBox 显示正确。 (我什至确认了路径语句仅引用了该 VM 中的文件夹,并搜索了任何 *160.bpl 文件 - 它只找到了我复制到新文件夹中的那个。)
  • 你说得对,我很惊讶。所以可以在一个包中使用 rtl 和其他链接的东西。但是它不能反过来工作,一旦你引用 vcl、vclx 运行时包,你必须部署 rtl160。必须对依赖层次结构做点什么。
猜你喜欢
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
  • 2013-10-26
  • 1970-01-01
  • 2012-08-25
  • 2012-01-07
  • 2013-05-18
相关资源
最近更新 更多