Delphi版本中的源代码兼容性(*.pas和*.dfm文件)

4
不同版本的DELPHI之间的项目文件、源代码和*.dfm文件兼容性是否有相关信息?如果我不使用DELPHI XE3的最新功能,我是否仍然可以打开代码库并使用例如DELPHI 2010进行编译?(我知道Unicode问题或组件更改如从INDY 9到INDY 10将阻止降级,但这对我来说是另一个话题)例如,使用Delphi 7项目,在DELPHI 2010上打开和编译后,您将无法使用DELPHi 7重新打开该项目,因为某些对象将具有从2010年打开该项目时扩展的属性。在这种情况下,手动回归到DELPHi 7样式相当耗时。开发团队可以一起工作吗?其中成员使用不同的DELPHI XX版本?

1
很难(如果有的话)解决这个问题。您可以通过不共享项目(.dproj)文件来处理部分问题,但是由于属性被添加和类型被更改,您无法对存储在.dfm中的内容做太多事情。绝对没有办法同时在D7和D2010中使用相同的.dfms和.pas文件进行工作-差异太大了。如果您尝试,将会遇到无数的头痛 - 如果您计划尝试,我建议您购买Wyeth-Ayerst(Advil制造商)等公司的股票。 :-) - Ken White
团队必须使用相同的Delphi版本。当然,我会保持组件库(如jvcl)的可移植性,并使用dfm清理工具。但企业应用程序一次只能使用一个版本。 - Warren P
XE2和X3的代码兼容吗,除了FM2 vs FM这样的新功能?有关此信息的任何链接吗? (请注意,以下内容仅为翻译文本,可能不包含上下文所需的所有细节或背景。) - user1769184
1
你可以使用Andy Hausladen的DFMCheck工具来帮助解决DFM文件中的属性冲突问题。 - Uli Gerhardt
这会很难。我建议你学习JCL/JVCL代码,了解它们如何处理不兼容性。 - OnTheFly
显示剩余3条评论
1个回答

1
可以做到你想要的,但我无法想象你为什么要这样做。当我们将应用程序从D6迁移到D2010时,我们有共享源代码可以在两个版本中构建。
这纯粹是一个过渡性安排。一旦我们对D2010端口有信心,就会切断脐带。此时,我们热情地拥抱了D2010的新功能。
为了使这项工作顺利进行,我们使用了以下支撑措施:
  1. 助手函数以减轻ANSI / Unicode差异。
  2. 单位别名以处理单位重命名。例如,主题单位从D6更改为D2010,而单位别名功能则隐藏了它。
  3. 大量条件代码。
所有这些都是必要的,因为我们有一个移植任务,因此必须在两个版本中进行编译。旧版本用于我们现有产品的维护,而新版本则用于测试和开发端口。

但我认为你没有必要这样做,因为这会导致代码变得非常复杂。如果你想让你的应用程序在D7中构建,则始终在D7中构建它。由于你不能使用现代Delphi的功能并保持与D7的兼容性,那么为什么不使用D7呢?当你购买现代Delphi时,也可以访问旧版Delphi。


1
是的,不幸的是,Delphi要求开发人员将代码从一个版本移植到另一个版本。 - OnTheFly
@user539484 只有从 ANSI 到 Unicode 才算是一个端口。 - David Heffernan
1
那真是个幸运的情况 :) 无论如何,销售部门支持、记录和赞赏上升转换,但弗朗茨想要双向转换,其中向下转换是造成问题的一方,且问题很多。 - OnTheFly

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