我试图自动找出哪个Delphi (在我的计算机上安装了Delphi5到XE2 )来打开一个给定的项目,而不会错误地升级该项目。
到Delphi7为止,每个项目都有一个.ini格式的.ini文件。Delphi5没有任何可能有帮助的条目,但从Delphi6开始,有一个FileVersion部分包含以下值:
所以我想这就解决了这一点,因为旧的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独有的?
不知何故,我怀疑GUID可能代表不同的SKU(专业/架构师等)。但也许你能证实这一点?
从Delphi2007开始,有一个不同.dproj格式的XML文件。Delphi 2007格式不包含我可以找到的任何版本条目,但从Delphi 2009开始,似乎有以下条目:
\project\PropertyGroup\ProjectVersion
以下是我在.dproj文件中找到的值:
如果这些是正确的,我可以可靠地确定Delphi2007、XE和XE2。但我如何区分德尔福2009和2010年?
而且,这些数字在我看来很奇怪。有没有人知道德尔福的各种更新之间是否有什么不同,例如,最初的Delphi发布版本是否可能以13.0开头,而随着每次更新增量,则是点后的数字吗?但是如果是这样的话,Delphi是如何得到12.3的呢?
(有一个类似的问题,我如何知道Delphi的哪个版本用于创建一个项目,但其中的单一答案是相当有限的。)
万一其他人需要这样做:我刚刚添加了一个页面到Delphi Wiki,它总结了所有答案,并为更新的Delphi添加了信息(目前最高可达Delphi10.4.1)。
发布于 2012-03-18 15:13:32
*PROJ文件中的版本号并不绑定到发布或更新中,也不是所有版本都出现在街头。
发布于 2012-03-18 16:16:48
我现在比较了德尔菲2005和2006年的.bdsproj文件,没有差别。而且,Delphi2009和2010创建的.dproj文件之间没有区别。
所以答案是:
不幸的是,这不允许我为给定的项目自动启动正确的Delphi版本的程序。
也许我会让程序询问用户是否有两种可能性,并将他的答案存储在一个.ini文件中,以便下次程序知道要启动哪个Delphi版本。
顺便说一句:我之所以要研究这个问题,是因为我有几次意外地打开了Delphi 2007项目,后来的Delphi版本对其进行了升级,我不得不手动扭转这些变化。这已经变得非常烦人,我想通过将自己的程序注册为.dpr文件的处理程序来阻止它。
发布于 2012-09-07 03:56:16
刚刚安装了XE3。14.3 XE3 (C++ & Delphi)
https://stackoverflow.com/questions/9757886
复制相似问题