Delphi 6 - 多次编译后错误消失

5

我最近几个月的Delphi安装出了些问题。每次发布版本时,总是会出现一些奇怪的错误,但如果我进行构建、编译、构建、编译等操作就可以解决这些错误。

我和另一个开发者谈过,他认为这是编译器错误。我们也曾在其他电脑上遇到过类似逐渐性能下降的情况。

Stack Overflow认为可能是什么问题?


7
好的,我将为您进行翻译。以下是翻译的结果:似乎是时候升级了。 :) - kludg
4
个人认为,使用Delphi编程时最好跳过偶数版本,因为它们都很不稳定。当然,在后来的几年里,为了自己的心理健康,我决定连奇数版本也跳过。 - NotMe
1
什么样的“奇怪错误”?你希望我们猜测还是读懂你的想法? :) - Alex
这是在 Delphi 6、7 中经典的感知问题,通常是由于用户拥有一个完整的目录乱七八糟的 DCU,以及创建了一堆疯狂的 DCU 和 PAS 文件供编译器进行排序的库路径和项目搜索路径设置所致。 - Warren P
3个回答

7

我最常见到的情况是同一单元/DCU的多个版本存在于不同的文件夹/路径中,根据几乎微不足道的差异,编译器/链接器使用不同的路径并选择不同版本的单元来构建exe。
我会进行大规模的清理,检查lib/search路径,删除所有DCUs,并确保没有任何单元的重复版本。
同意,重新安装Delphi可以帮助开始一个干净的状态。


这是非常可能的情况。我们使用的DCU和组件是巨大的老鼠窝,已经在过去10多年的开发中发生了变异。有一些组件甚至连源代码都没有,只有编译后的DCU。您有没有任何简单的方法来检查多个单位/DCU,并完成所有这些操作的建议?有任何程序或插件吗? - Daisetsu
6
@Daisetsu: 哎呀!你永远不应该使用仅限DCU的组件!如果我处于你的位置,那会是我下一个StackOverflow问题:“如何用源代码可用的替代品替换<仅限DCU的组件>,且难度最小?” - Mason Wheeler
1
@Mason:完全同意。@Daisetsu:绝不要使用没有源代码的组件。我曾经吃过亏。 - Fabricio Araujo
@Mason Datasnap在过去也只支持DCU,但这并没有阻止人们使用它(为Midas 1支付5k欧元的许可证费用)-很高兴看到E *终于听到了你的声音 :) - mjn

5

我同意@François关于DCUs的观点,但也想指出一个观察结果:有时候在构建当前项目之前构建的内容很重要。例如,如果您有几个项目包含源代码,这些源代码会在公共目录中创建各种.dcu / bpl文件,但您所关心的项目没有明确要求重新构建它们,那么您将得到其中的任何内容。如果在构建之前清除dcus / dcps,然后发现您的项目无法构建,则说明您在某个地方缺少了uses / requires子句。每个项目都应该能够在“干净”的状态下构建,而不是依赖残留的二进制文件。


0

虽然信息不多,但听起来像是“位腐败”的典型案例。太多的东西在一个设计不良的操作系统下相互作用了太长时间,导致奇怪的数据损坏形式。

首先我会卸载 Delphi 并重新安装。如果这样还不行,尝试重新安装 Windows。(如果它已经存在足够长的时间,以至于出现这种情况,你可能需要重新安装操作系统。)如果这些都不行,请联系 Embarcadero 技术支持。


4
我认为很有趣的是,当其他编译器正常运行时,Delphi自身(多个版本)却有着这种不稳定的表现,而你却将问题归咎于操作系统。 - NotMe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接