Как определить версию Delphi, в которой был создан проект Delphi

Я пытаюсь автоматически определить, какую версию Delphi (от Delphi 5 до XE2, установленную на моем компьютере) использовать для открытия данного проекта без ошибочного обновления этого проекта.

До Delphi 7 для каждого проекта существует файл .dof в формате .ini. В Delphi 5 нет записей, которые могли бы помочь, но, начиная с Delphi 6, существует раздел [FileVersion], который содержит следующие значения:

  • Delphi 5: Н/Д
  • Delphi 6: 6.0
  • Delphi 7 : 7.0

Так что я думаю, что это решает, так как более старые версии Delphi меня не касаются.

Для Delphi 2005 и 2006 существует файл .bdsproj в формате XML, содержащий запись версии: \BorlandProject\PersonalityInfo\Option\Option

В Delphi 2005 это выглядит так:

В Delphi 2006 так:

Таким образом, я мог посмотреть, существует ли атрибут "Тип", и в зависимости от этого выбрать Delphi 2005 или 2006. Может ли кто-нибудь взглянуть на его проекты Delphi 2005 и 2006 и проверить эту разницу? (Или, может быть, у вас есть идея получше?)

edit:Я только что попытался проверить это и обнаружил, что Delphi 2005 не всегда добавляет атрибут типа. Так что теперь я застрял.

edit:Может быть, хранящийся там GUID уникален для версии Delphi?

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

Почему-то я сомневаюсь, что GUID может представлять различные SKU (Professional / Architect и т. д.). Но, может быть, вы могли бы проверить это?

Начиная с Delphi 2007 существует файл .dproj в другом формате XML. Формат Delphi 2007 не содержит никакой записи версии, которую я мог найти, но начиная с Delphi 2009, кажется, есть следующая запись:

\project\PropertyGroup\ProjectVersion

Это значения, которые я нашел в своих файлах .dproj. :

  • Delphi 2007: Н/Д
  • Delphi 2009: 12.0
  • Delphi 2010: 12.0
  • Delphi XE: 12.3
  • Delphi XE2: 13.4

Если они верны, я могу надежно определить Делфи 2007, ХЕ и ХЕ2. Но как отличить Delphi 2009 от 2010?

Кроме того, эти цифры кажутся мне странными. Кто-нибудь знает, есть ли какие-либо различия между различными обновлениями Delphi, например. возможно, исходный выпуск Delphi XE2 начинался с 13.0 и с каждым обновлением увеличивал число после точки? Но если это так, то как Delphi XE получила версию 12.3?

(Есть аналогичный вопрос Как я могу узнать, какая версия Delphi использовалась для создания проекта, но один ответ там весьма ограничен.)

На всякий случай, если это кому-то еще понадобится: Я только что добавил страницу в Delphi Wiki, которая обобщает все ответы и добавляет информацию для более новых версий Delphi (в настоящее время до Delphi 10.3.3).

24
задан dummzeuch 26 November 2019 в 13:02
поделиться