我正在尝试自动确定哪个Delphi版本(我的计算机上安装了Delphi 5到XE2)用于打开给定项目而不会错误地升级该项目。
直到Delphi 7,每个项目都有.ini格式的.dof文件。 Delphi 5没有任何可能有用的条目,但从Delphi 6开始有一个[FileVersion]部分,其中包含以下值:
所以我想这就解决了,因为较旧的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版本是唯一的?
不知何故,我怀疑它,我担心GUID可能代表不同的SKU(专业/建筑师等)。但也许你可以验证一下?
从Delphi 2007开始,有一个不同XML格式的.dproj文件。 Delphi 2007格式不包含我能找到的任何版本条目,但是从Delphi 2009开始,似乎有以下条目:
\project\PropertyGroup\ProjectVersion
这些是我在.dproj文件中找到的值:
如果这些是正确的,我可以可靠地确定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)。
答案 0 :(得分:10)
我现在比较了Delphi 2005和2006的.bdsproj文件,没有区别。此外,Delphi 2009和2010创建的.dproj文件之间没有区别。
所以答案是:
不幸的是,这不允许我编写一个程序来自动启动给定项目的正确Delphi版本。
也许我会让程序询问用户是否有两种可能性并将他的答案存储在.ini文件中,以便下次程序知道要启动哪个Delphi版本。
顺便说一句:我之所以这样做是因为我曾多次意外地打开Delphi 2007项目,后来的Delphi版本升级了它,我不得不手动撤销这些变化。这已经变得非常烦人,我想通过将我自己的程序注册为.dpr文件的处理程序来阻止它。答案 1 :(得分:5)
* PROJ文件中的版本号未绑定到版本或更新,并非所有版本都可以上街。
答案 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