gpt4 book ai didi

delphi - 如何确定创建Delphi项目的Delphi版本

转载 作者:行者123 更新时间:2023-12-03 14:34:05 26 4
gpt4 key购买 nike

我试图自动找出用于打开给定项目的 Delphi 版本(我的计算机上安装的 Delphi 5 到 XE2),而不会错误地升级该项目。

直到 Delphi 7,每个项目都有一个 .ini 格式的 .dof 文件。Delphi 5 没有任何可能有帮助的条目,但从 Delphi 6 开始,有一个 [FileVersion] 部分,其中包含以下值:

  • Delphi 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 并不总是添加类型属性。所以现在我陷入困境了。

编辑:也许存储在那里的 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的各种更新之间是否有任何差异,例如最初的 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 2005和2006的.bdsproj文件,没有区别。另外,Delphi 2009 和 2010 创建的 .dproj 文件没有区别。

所以答案是:

  • 如果 .dproj 文件存在 -> 读取\project\PropertyGroup\ProjectVersion
    • 空 -> Delphi 2007
    • 12.0 -> 德尔福 2009 或 2010
    • 12.2 或 12.3 -> Delphi XE1(根据 Uwe Schuster 的说法)
    • 13.4 -> 德尔福 XE2
  • 如果 .bdsproj 文件存在 -> Delphi 2005 或 2006
  • 如果 .dof 文件存在 -> 读取 [FileVersion]\version
    • 空 -> Delphi 5(或可能更旧)
    • 6.0 -> 德尔福 6
    • 7.0 -> 德尔福 7

不幸的是,这不允许我编写一个程序来自动启动给定项目的正确 Delphi 版本。

也许我会让程序询问用户是否有两种可能性,并将他的答案存储在 .ini 文件中,以便下次程序知道要启动哪个 Delphi 版本。

顺便说一句:我研究这个问题的原因是我有几次不小心用更新的 Delphi 版本打开了 Delphi 2007 项目,该版本升级了它,我不得不手动反转这些更改。这变得非常烦人,我想通过将自己的程序注册为 .dpr 文件的处理程序来阻止它。

关于delphi - 如何确定创建Delphi项目的Delphi版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9757886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com