【发布时间】:2012-04-03 05:07:06
【问题描述】:
我正在尝试自动找出用于打开给定项目的 Delphi 版本(我的计算机上安装的 Delphi 5 到 XE2),而不会错误地升级该项目。
直到 Delphi 7,每个项目都有一个 .ini 格式的 .dof 文件。 Delphi 5 没有任何可能有帮助的条目,但从 Delphi 6 开始,有一个 [FileVersion] 部分包含以下值:
- 德尔福 5:不适用
- 德尔福6:6.0
- 德尔福 7:7.0
所以我想这已经解决了,因为旧的 Delphi 版本与我无关。
对于 Delphi 2005 和 2006,有一个 XML 格式的 .bdsproj 文件,其中包含版本条目: \BorlandProject\PersonalityInfo\Option\Option
在 Delphi 2005 中它看起来像这样:
<Option Name="Version" Type="String">1.0</Option>
在 Delphi 2006 中是这样的:
<Option Name="Version">1.0</Option>
所以我可以查看属性“Type”是否存在,并根据 Delphi 2005 或 2006 来决定。 有人可以看看他的 Delphi 2005 和 2006 项目并验证这种差异吗? (或者你有更好的主意吗?)
编辑: 我只是尝试验证这一点,发现 Delphi 2005 并不总是添加 Type-Attribute。所以现在我被卡住了。
编辑:也许存储在那里的 GUID 是 Delphi 版本独有的?
- 德尔福 2005:{87D03616-A4C7-4B5A-AF0F-0164EA60BC59}
- 德尔福 2006:{CFE1BEE6-6FDE-4241-8CA5-D38D14EAA768}
不知何故我对此表示怀疑,我担心 GUID 可能代表不同的 SKU(专业/建筑师等)。但也许你可以验证一下?
从 Delphi 2007 开始,有一个不同 XML 格式的 .dproj 文件。 Delphi 2007 格式不包含我能找到的任何版本条目,但从 Delphi 2009 开始似乎有以下条目:
\project\PropertyGroup\ProjectVersion
这些是我在 .dproj 文件中找到的值:
- 德尔福 2007:不适用
- 德尔福 2009:12.0
- 德尔福 2010:12.0
- 德尔福 XE:12.3
- 德尔福 XE2:13.4
如果这些都是正确的,我可以可靠地确定 Delphi 2007、XE 和 XE2。但是如何区分 Delphi 2009 和 2010 呢?
而且,这些数字在我看来很奇怪。有谁知道德尔福的各种更新之间是否有任何区别,例如最初的 Delphi XE2 版本是否可能从 13.0 开始,并且每次更新都会增加点后的数字?但如果是这样的话,Delphi XE 是怎么搞到 12.3 的呢?
(有一个类似的问题How can I tell what version of Delphi was used to create a project,但那里的单一答案非常有限。)
以防万一其他人需要这个:我刚刚添加了一个page to the Delphi Wiki,它总结了所有答案并添加了较新的 Delphi 版本(当前为 Delphi 10.4.1)的信息。
【问题讨论】:
-
为什么需要这个?你肯定知道你的项目是用哪个版本的 Delphi 构建的。
-
@DavidHeffernan 在下面看到我的回答。
-
我建议遵循一个简单的命名约定来清楚地识别特定项目文件的目标 delphi 版本。例如。我们将项目文件放在一个子文件夹中。所以文件夹名称表示要使用的Delphi版本。
标签: delphi