【问题标题】:Delphi : .dcu not found, but code works on another computerDelphi:.dcu 未找到,但代码可在另一台计算机上运行
【发布时间】:2019-02-27 20:07:31
【问题描述】:

我一直在编写一个 Delphi 代码,它可以在我的计算机(计算机 A)上运行。我正在尝试在另一台计算机(计算机 B)上执行相同的代码。于是我去了那台计算机B,通过SVN获取了Delphi代码,并尝试构建。

但我得到了错误:

[Pascal 致命错误] URoneParams.pas(7): F1026 找不到文件: 'CRBatchMove.dcu'

我想检查计算机 A 上是否有那个 .dcu。但是当我检查那台计算机 A 上的源时,有很多 .dcu,但“CRBatchMove.dcu”不是其中之一。

你知道吗:

  • 如何解决计算机 B 上的 .dcu 错误?
  • 为什么计算机 A 的文件中没有 CRBatchMove.dcu?

非常感谢您的帮助!

编辑 1 非常感谢大家的快速回答!

@MBo 和 David:.pas 也不存在,无论我是在计算机 A 的文件中还是在计算机 B 的文件中查找它.

@MartynA:我确实在“文件”中进行了搜索。在两台计算机上,它都返回 URParams.pas,它确实使用了 CRBatchMove。这是一个好兆头吗? :)

你觉得我应该怎么做?再次感谢!

【问题讨论】:

  • CRBatchMove.pas 呢?
  • dcu 是编译单元。如果可以找到单元,pas 文件,它将被编译到 dcu。因此,pas 文件似乎不存在。
  • 您是否对 .Pas 文件进行了 Search in Files 处理,以查看其中哪些使用了 CRBatchMove 单元?
  • 您需要找到 .pas 文件,以便编译它。我们很难猜测你会在哪里找到它。你问过写代码的人吗?
  • 谢谢你,大卫,我会尽力找到这些信息 - 虽然该应用程序是 15 年前编码的,所以我不确定是否还有人在这里编码...

标签: delphi dcu


【解决方案1】:

单元 CRBatchMove 是 "Universal Data Access Components" by DevArt 的一部分。

您还必须在目标计算机上安装这些组件。请注意,这是商业软件,因此您需要有效的许可证才能在多台计算机上和多人一起安装和使用该组件。

安装组件时,它们作为包(*.bpl 文件)分发。一个包可以包含多个编译单元。这就是您找不到CRBatchMove.dcu 文件的原因。它包含在 dac*.bpl(或类似)文件中。

【讨论】:

  • 也可能是 SDAC(也可能是 DevArt 的另一个 *DAC)。
  • 这完全有道理!不幸的是,我无法再访问我进行测试的机器,所以我无法向您确认这现在可以解决我的问题。我会告诉你什么时候/如果我可以再次访问那台机器。非常感谢您的帮助!
【解决方案2】:

对此我能想到的唯一解释是,如果您的项目设置为使用运行时包,并且 CRBatchMove 的代码被编译成您的项目所依赖的运行时包之一。如果是这种情况,请尝试将您的项目依赖的包(.Bpl 文件)复制到机器 B 上,假设您的 .Bpls 许可证允许这样做。

如果您的项目是一个独立的应用程序,那么即使您可以找到包含 CRBatchMove 代码的 .Bpl 文件,将其复制到机器 B 也不会帮助您在机器 B 中编译您的项目,因为 Delphi 编译器无法从 .Bpl 中提取代码以将其编译到您的项目中。这与使用 run-tome 包之间存在差异的原因是,当 CRBatchMove 在其中一个包中时,编译器不需要生成其代码以包含在您的项目中,只需在运行中调用 CRBatchMove 代码的代码-time 包。

【讨论】:

  • 嗨MartynA,谢谢你的回答。不幸的是,正如我告诉 NineBerry 的那样,我无法再访问我进行测试的机器,所以我现在无法尝试 :( 但如果我再次可以访问机器,我'我会尽力让您知道。感谢您的帮助!
  • @JulietteRouëssé:很遗憾您现在无法访问另一台机器,但您肯定必须知道您的项目是否使用运行时包?
  • 是的,确实如此,所以你的解释对我来说完全有道理
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-26
  • 2011-03-30
  • 1970-01-01
相关资源
最近更新 更多