【问题标题】:Delphi 6 - Bugs disappear when I compile multiple timesDelphi 6 - 多次编译时错误消失
【发布时间】:2011-02-15 13:54:57
【问题描述】:

在过去的几个月里,我的 Delphi 安装一直在走下坡路。似乎当我构建一个版本时,它经常会出现奇怪的错误,如果我构建,然后编译,然后构建,编译等,这些错误就会得到解决。

我与另一位认为这是编译器错误的开发人员交谈过。随着时间的推移,这种性能下降的情况也发生在我们的其他计算机上。

堆栈溢出认为可能是什么问题。

【问题讨论】:

  • 看来是时候升级了。 :)
  • 就个人而言,我发现使用 Delphi 总是最好跳过偶数版本。他们都是片状的。当然,在后来的几年里,我决定为了自己的理智,我也会跳过奇数的。
  • 什么样的“奇怪的错误”?您希望我们猜测或阅读您的想法吗? :)
  • 这是Delphi 6、7中的经典认知,这通常是由于用户有一个完整的老鼠巢充满DCU的目录,以及创建疯狂的库路径和项目搜索路径设置供编译器排序的 DCU 和 PAS 文件的网络。

标签: delphi compiler-construction compilation delphi-6


【解决方案1】:

这没什么好说的,但这听起来像是“位腐烂”的经典案例。在设计不佳的操作系统下,太多事物以太多方式交互太长时间,从而导致奇怪的数据损坏形式。

我要做的第一件事是卸载 Delphi 并重新安装。如果这不起作用,请尝试重新安装 Windows。 (如果发生这种情况的时间已经足够长,那么您可能还是需要重新安装操作系统。)如果这不起作用,请联系 Embarcadero 技术支持。

【讨论】:

【解决方案2】:

我见过的最多的是相同单元/dcus 的多个版本存在于不同文件夹/路径中的情况,并且根据几乎无关紧要的变化,编译器/链接器使用不同的路径并选择不同版本的单元构建 exe。
我会进行大规模的 Spring 清理,检查 lib/search 路径,删除所有 dcus 并确保没有任何单元的重复版本。
而且,同意,重新安装 Delphi 可以帮助从一个干净的状态开始。

【讨论】:

  • 这很有可能。我们使用的 dcus 和组件是巨型老鼠巢,在过去 10 多年左右发生了变异,该应用程序一直在开发中。有些组件我们甚至没有源代码,只有编译后的 DCU。您对检查多个单元/dcus 并执行所有这些操作的简单方法有什么建议吗?任何类型的程序或插件?
  • @Daisetsu:嘎!你永远不应该使用 DCU-only 组件!如果我处于你的位置,那将是我的下一个 StackOverflow 问题:“我如何才能以最小的难度将 替换为具有可用源的替代品?”
  • @Mason:完全同意。 @Daisetsu:永远不要使用没有源的组件。我学得很辛苦。
  • @Mason Datasnap 过去也是 DCU-only,但这并没有阻止人们使用它(为 Midas 1 支付每个许可证 5k 欧元)- 很高兴看到 E* 终于听到了你的声音 :)
【解决方案3】:

我同意@François 关于 DCU 的看法,但也想指出一个观察:有时在您正在构建的东西之前构建什么很重要。即,如果您有多个项目包含导致在公共目录中创建各种 .dcu/bpl 文件的源代码,但您关注的项目没有明确要求重建它们,那么您就是最终会得到任何东西。如果您在构建之前清除了 dcus/dcps,然后发现您的项目没有构建,那么您在某处缺少了 uses/requires 子句。每个项目都应该能够建立在“干净的状态”上,而不是依赖剩余的二进制文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 2013-09-12
    • 2014-04-07
    • 2014-01-12
    • 1970-01-01
    • 2019-01-02
    相关资源
    最近更新 更多