Estoy tratando de averiguar automáticamente qué versión de Delphi (de Delphi 5 a XE2 instalada en mi computadora) usar para abrir un proyecto determinado sin actualizar ese proyecto por error.Cómo determino la versión de Delphi que creó un proyecto de Delphi
Hasta Delphi 7 hay un archivo .dof en formato .ini para cada proyecto. Delphi 5 no tiene ninguna entrada que podría ayudar, pero a partir de Delphi 6 hay una sección [FileVersion], que contiene los siguientes valores:
- Delphi 5: N/A
- Delphi 6: 6,0
- Delphi 7: 7,0
Así que supongo que se asienta que, dado que las versiones anteriores de Delphi no me preocupan.
Para Delphi 2005 y 2006 hay un archivo .bdsproj en formato XML que contiene una entrada de versión: \ BorlandProject \ PersonalityInfo \ opción \ Opción
En Delphi 2005 se parece a esto:
<Option Name="Version" Type="String">1.0</Option>
En Delphi 2006 así:
<Option Name="Version">1.0</Option>
Entonces podría ver si existe el atributo "Tipo" y dependiendo de eso decidir sobre Delphi 2005 o 2006. ¿Podría alguien echar un vistazo a sus proyectos Delphi 2005 y 2006 y verificar esta diferencia? (¿O tal vez tiene una mejor idea?)
edit: Intenté verificar esto y encontré que Delphi 2005 no siempre agrega el Tipo-Atributo. Así que ahora estoy atascado.
editar: Tal vez el GUID almacenado allí es exclusivo de la versión Delphi?
- Delphi 2005: {87D03616-A4C7-4B5A-AF0F-0164EA60BC59}
- Delphi 2006: {CFE1BEE6-6FDE-4241-8CA5-D38D14EAA768}
De alguna manera lo dudo, estoy temeroso de que el GUID pueda representar diferentes SKU (Profesional/Arquitecto, etc.). Pero tal vez podrías verificar esto?
Comenzando con Delphi 2007 hay un archivo .dproj en un formato XML diferente. El formato Delphi 2007 no contiene ninguna entrada versión que pude encontrar, pero a partir de 2009, sobre Delphi no parece ser la siguiente entrada:
\project\PropertyGroup\ProjectVersion
Estos son los valores que encontré en mis archivos .dproj:
- Delphi 2007: N/A
- Delphi 2009: 12,0
- Delphi 2010: 12.0
- Delphi XE: 12.3
- Delphi XE2: 13,4
Si éstas son correctas, podría determinar de forma fiable Delphi 2007, XE y XE2. ¿Pero cómo distingo entre Delphi 2009 y 2010?
Además, estos números me parecen extraños. ¿Alguien sabe si existen diferencias entre las diversas actualizaciones de Delphi, p. ¿La versión original de Delphi XE2 podría comenzar con 13.0 y con cada actualización incrementar el número después del punto? Pero si ese es el caso, ¿cómo obtuvo Delphi XE 12.3?
(hay una pregunta similar How can I tell what version of Delphi was used to create a project pero la única respuesta no es bastante limitada.)
Sólo en caso de cualquier otra persona necesita esto: simplemente he añadido un page to the Delphi Wiki que resume todas las respuestas y añade información para las nuevas versiones de Delphi (actualmente hasta Delphi 10.1).
¿Por qué necesita esto? Seguramente sabes con qué versión de Delphi están construidos tus proyectos. –
@DavidHeffernan vea mi respuesta a continuación. – dummzeuch
Sugiero seguir una convención de nomenclatura simple para identificar claramente la versión delphi de destino para un archivo de proyecto en particular. P.ej. Ponemos nuestros archivos de proyecto en una subcarpeta. Entonces, el nombre de la carpeta indica la versión de Delphi que se usará. –