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

dum*_*uch 24 delphi

我试图自动弄清楚哪个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>

所以我可以看看属性"类型"是否存在并且取决于Delphi 2005或2006的决定.有人可以看看他的Delphi 2005和2006项目并验证这种差异吗?(或者你可能有更好的主意?)

编辑:我只是试图验证这一点并发现,Delphi 2005并不总是添加Type-Attribute.所以现在我被卡住了.

编辑:也许存储在那里的GUID对Delphi版本是唯一的?

  • Delphi 2005:{87D03616-A4C7-4B5A-AF0F-0164EA60BC59}
  • Delphi 2006:{CFE1BEE6-6FDE-4241-8CA5-D38D14EAA768}

不知怎的,我怀疑它,我担心GUID可能代表不同的SKU(专业/建筑师等).但也许你可以验证一下?

从Delphi 2007开始,有一个不同XML格式的.dproj文件.Delphi 2007格式不包含我能找到的任何版本条目,但是从Delphi 2009开始,似乎有以下条目:

\project\PropertyGroup\ProjectVersion

这些是我在.dproj文件中找到的值:

  • Delphi 2007:N/A.
  • 德尔福2009:12.0
  • Delphi 2010:12.0
  • 德尔福XE:12.3
  • 德尔福XE2:13.4

如果这些是正确的,我可以可靠地确定Delphi 2007,XE和XE2.但我如何区分Delphi 2009和2010?

而且,这些数字对我来说很奇怪.有没有人知道Delphi的各种更新之间是否有任何差异,例如原始的Delphi XE2版本是否可以从13.0开始并且每次更新都会增加点后面的数字?但如果是这样的话,德尔福XE如何获得12.3?

(有一个类似的问题我怎么能告诉用什么版本的Delphi来创建一个项目,但单一的答案非常有限.)

以防万一其他人需要这个:我刚刚在Delphi Wiki中添加了一个页面,它总结了所有答案,并为更新的Delphi版本添加了信息(目前直到Delphi 10.1).

dum*_*uch 11

我现在比较了Delphi 2005和2006的.bdsproj文件,没有区别.此外,Delphi 2009和2010创建的.dproj文件之间没有区别.

所以答案是:

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

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

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

顺便说一下:我之所以这么做是因为我曾多次意外地打开Delphi 2007项目,后来的Delphi版本升级了它,我不得不手动撤销这些变化.这已经变得非常烦人,我想通过将我自己的程序注册为.dpr文件的处理程序来防止它.

  • 如果您手动反转更改,则需要使用版本控制 (2认同)

Uwe*_*ter 6

*PROJ文件中的版本号不受发布或更新的约束,并非所有版本都可以上街.

  • Delphi XE RTM使用的是12.2版
  • Delphi XE Update#1使用版本12.3
  • Delphi XE2(RTM直到更新#4)使用13.4