Я пытаюсь автоматически определить, какую версию Delphi (от Delphi 5 до XE2, установленную на моем компьютере) использовать для открытия данного проекта без ошибочного обновления этого проекта.
До Delphi 7 для каждого проекта существует файл .dof в формате .ini. В Delphi 5 нет записей, которые могли бы помочь, но, начиная с Delphi 6, существует раздел [FileVersion], который содержит следующие значения:
Так что я думаю, что это решает, так как более старые версии 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?
Почему-то я сомневаюсь, что GUID может представлять различные SKU (Professional / Architect и т. д.). Но, может быть, вы могли бы проверить это?
Начиная с Delphi 2007 существует файл .dproj в другом формате XML. Формат Delphi 2007 не содержит никакой записи версии, которую я мог найти, но начиная с Delphi 2009, кажется, есть следующая запись:
\project\PropertyGroup\ProjectVersion
Это значения, которые я нашел в своих файлах .dproj. :
Если они верны, я могу надежно определить Делфи 2007, ХЕ и ХЕ2. Но как отличить Delphi 2009 от 2010?
Кроме того, эти цифры кажутся мне странными. Кто-нибудь знает, есть ли какие-либо различия между различными обновлениями Delphi, например. возможно, исходный выпуск Delphi XE2 начинался с 13.0 и с каждым обновлением увеличивал число после точки? Но если это так, то как Delphi XE получила версию 12.3?
(Есть аналогичный вопрос Как я могу узнать, какая версия Delphi использовалась для создания проекта, но один ответ там весьма ограничен.)
На всякий случай, если это кому-то еще понадобится: Я только что добавил страницу в Delphi Wiki, которая обобщает все ответы и добавляет информацию для более новых версий Delphi (в настоящее время до Delphi 10.3.3).