Для Delphi XE2 я использую это:
{$IFDEF BDS9}
Result.VersionString := 'Delphi XE2 ' +
{$IF NOT DECLARED(Consts.SStyleFeatureNotSupported)}
'(original release version)'
{$ELSE} {$IF NOT DECLARED(FireMonkeyVersion)} // D2010 chokes when scope (FMX.Types) is mentioned!
'Update 1'
{$ELSE} {$IF NOT DECLARED(System.TestSSE)}
'Update 2'
{$ELSE}
'Update 3'
// TODO : Update this for any following update!
{$IFEND} {$IFEND} {$IFEND}
;
{$ELSE}
{$IFDEF BDS7}
Result.VersionString := 'Delphi 2010';
{$ELSE}
{$MESSAGE ERROR 'Extend this!'}
{$ENDIF}
{$ENDIF}
Другими словами: я проверяю наличие символов, которые вводятся начиная с любой конкретной delphi-версии. Эту же конструкцию можно использовать для установки переменной или константы или определения компилятора, поэтому дальнейший код может использовать их вместо этого.
Примечание. Я сохраняю резервную копию папки Source
для всех версий Delphi, которые я установил за последние несколько лет. Размещение этих папок с помощью такого инструмента, как BeyondCompare и просмотр разностных файлов, быстро даст вам несколько символов, которые вы можете проверить ....