首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定创建Delphi项目的Delphi版本

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

Stack Overflow用户
提问于 2012-03-18 11:21:31
回答 4查看 8.4K关注 0票数 25

我试图自动找出哪个Delphi (在我的计算机上安装了Delphi5到XE2 )来打开一个给定的项目,而不会错误地升级该项目。

到Delphi7为止,每个项目都有一个.ini格式的.ini文件。Delphi5没有任何可能有帮助的条目,但从Delphi6开始,有一个FileVersion部分包含以下值:

  • 德尔菲5:不适用
  • Delphi 6: 6.0
  • 德尔菲7: 7.0

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

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

在Delphi 2005中,如下所示:

<Option Name="Version" Type="String">1.0</Option>

在特尔斐,2006年这样:

<Option Name="Version">1.0</Option>

因此,我可以查看属性"Type“是否存在,取决于这取决于Delphi 2005还是2006。有人能看看他的德尔菲2005和2006年的项目,并核实这一差异吗?(或者你有更好的主意?)

编辑:-我只是试着验证并发现,Delphi2005并不总是添加Type。所以现在我被困住了。

编辑:,也许那里存储的GUID是Delphi独有的?

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

不知何故,我怀疑GUID可能代表不同的SKU(专业/架构师等)。但也许你能证实这一点?

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

\project\PropertyGroup\ProjectVersion

以下是我在.dproj文件中找到的值:

  • 德尔菲2007:不适用
  • 德尔菲2009: 12.0
  • 德尔菲2010: 12.0
  • 德尔菲XE: 12.3
  • 德尔福XE2: 13.4

如果这些是正确的,我可以可靠地确定Delphi2007、XE和XE2。但我如何区分德尔福2009和2010年?

而且,这些数字在我看来很奇怪。有没有人知道德尔福的各种更新之间是否有什么不同,例如,最初的Delphi发布版本是否可能以13.0开头,而随着每次更新增量,则是点后的数字吗?但是如果是这样的话,Delphi是如何得到12.3的呢?

(有一个类似的问题,我如何知道Delphi的哪个版本用于创建一个项目,但其中的单一答案是相当有限的。)

万一其他人需要这样做:我刚刚添加了一个页面到Delphi Wiki,它总结了所有答案,并为更新的Delphi添加了信息(目前最高可达Delphi10.4.1)。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-18 15:13:32

*PROJ文件中的版本号并不绑定到发布或更新中,也不是所有版本都出现在街头。

  • Delphi XE RTM使用12.2版
  • Delphi XE更新#1使用12.3版本
  • 德尔菲XE2 (RTM直到更新#4)使用13.4
票数 6
EN

Stack Overflow用户

发布于 2012-03-18 16:16:48

我现在比较了德尔菲2005和2006年的.bdsproj文件,没有差别。而且,Delphi2009和2010创建的.dproj文件之间没有区别。

所以答案是:

  • 如果存在.dproj文件,则读取\ -> \PropertyGroup\ProjectVersion
    • 空-> Delphi 2007
    • 12.0 2009年或2010年->德尔菲
    • 12.2或12.3 -> Delphi XE1 (根据Uwe Schuster)
    • 13.4 -> Delphi XE2

  • 如果存在.bdsproj文件,则-> Delphi 2005或2006
  • 如果存在.dof文件,则读取文件\版本
    • 空->德尔菲5(或可能更旧)
    • 6.0 -> Delphi 6
    • 7.0 -> Delphi 7

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

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

顺便说一句:我之所以要研究这个问题,是因为我有几次意外地打开了Delphi 2007项目,后来的Delphi版本对其进行了升级,我不得不手动扭转这些变化。这已经变得非常烦人,我想通过将自己的程序注册为.dpr文件的处理程序来阻止它。

票数 11
EN

Stack Overflow用户

发布于 2012-09-07 03:56:16

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9757886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档