Я пытаюсь автоматически определить, какую версию Delphi (от Delphi 5 до XE2, установленную на моем компьютере) использовать, чтобы открыть данный проект, не обновляя его по ошибке.
До Delphi 7 для каждого проекта существует файл .dof в формате .ini. В Delphi 5 нет записей, которые могли бы помочь, но начиная с Delphi 6 есть раздел [FileVersion], который содержит следующие значения:
- Delphi 5: N/A
- Delphi 6: 6.0
- Delphi 7: 7.0
Так что я думаю, это решает проблему, поскольку старые версии Delphi меня не касаются.
Для Delphi 2005 и 2006 существует файл .bdsproj в формате XML, содержащий запись версии:\BorlandProject\PersonalityInfo\Option\Option
В 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 не всегда добавляет атрибут типа. Так что теперь я застрял.
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: N/A
- Delphi 2009: 12,0
- Delphi 2010: 12,0
- Delphi XE: 12,3
- Delphi XE2: 13,4
Если они верны, я могу достоверно определить Delphi 2007, XE и XE2. Но как мне отличить Delphi 2009 от 2010?
Кроме того, эти цифры выглядят странно для меня. Кто-нибудь знает, есть ли какие-либо различия между различными обновлениями Delphi, например, возможно, оригинальный выпуск Delphi XE2 начинался с 13.0, и с каждым обновлением увеличивается число после точки? Но если это так, как Delphi XE получил 12,3?
(Есть похожий вопрос. Как узнать, какая версия Delphi использовалась для создания проекта, но единственный ответ там весьма ограничен.)
На всякий случай, если кому-то еще это понадобится: я только что добавил страницу в Delphi Wiki, которая суммирует все ответы и добавляет информацию для более новых версий Delphi (в настоящее время до Delphi 10.3).