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

时间:2012-03-18 11:21:31

标签: delphi

我正在尝试自动确定哪个Delphi版本(我的计算机上安装了Delphi 5到XE2)用于打开给定项目而不会错误地升级该项目。

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

  • Delphi 5:N / A
  • Delphi 6:6.0
  • Delphi 7:7.0

所以我想这就解决了,因为较旧的Delphi版本与我无关。

对于Delphi 2005和2006,有一个XML格式的.bdsproj文件,其中包含一个版本条目: \ BorlandProject \ PersonalityInfo \选项\选项

在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
  • Delphi 2009:12.0
  • Delphi 2010:12.0
  • Delphi XE:12.3
  • Delphi 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.3)。

4 个答案:

答案 0 :(得分:10)

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

所以答案是:

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

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

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

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

答案 1 :(得分:5)

* PROJ文件中的版本号未绑定到版本或更新,并非所有版本都可以上街。

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

答案 2 :(得分:4)

刚刚安装了XE3(RTM)。 14.3 XE3(C ++&amp; Delphi)

答案 3 :(得分:3)

今天我发现这个话题关于Delphi版本(标准版,专业版,企业版)。

无论如何,我检查了一些在我的机器中传播的.dof文件,并且有与古代delphi版本相关的事实:

如果.dof文件存在 - &gt;阅读[目录] /包

Delphi 3

[Directories]
OutputDir=
UnitOutputDir=
SearchPath=
Packages=VCLX30;VCL30;INETDB30;INET30;

Delphi 5

[Directories]
OutputDir=.
UnitOutputDir=.
PackageDLLOutputDir=.
PackageDCPOutputDir=.
SearchPath=
Packages=Vcl50;Inet50;Inetdb50;Vclx50;Indy50;

可以在dof文件末尾附近找到其他信息:

D3:

[Excluded Packages]
C:\Program Files\Borland\Delphi 3\Bin\DCLDSS30.dpl=Delphi Decision Cube Components
C:\PROGRAM FILES\BORLAND\DELPHI 3\BIN\DCLTEE30.DPL=Delphi TeeChart Components

D5:

[Excluded Packages]
$(DELPHI)\Bin\CorIde50.bpl=Borland Core IDE Package
$(DELPHI)\Bin\direct50.bpl=Borland Direct IDE Package