Помимо сказанного lassevk, вы также можете использовать несколько других методов оценки компилятора (начиная с Delphi 6, я считаю):
{$IF NOT DECLARED(SOME_SYMBOL)}
// Mind you : The NOT above is optional
{$ELSE}
{$IFEND}
Чтобы проверить, имеет ли компилятор эту функцию, используйте:
{$IFDEF CONDITIONALEXPRESSIONS}
Для этого есть несколько применений.
Например, вы можете проверить версию RTL; Из справки Delphi:
Вы можете использовать RTLVersion в $ IF
выражения для проверки времени выполнения
уровень версии библиотеки самостоятельно
уровня версии компилятора.
Пример: {$ IF RTLVersion> = 16.2} ...
{$ IFEND}
Также, сама версия компилятора может быть проверена, опять же из кода:
CompilerVersion присваивается значение
компилятор, когда системный блок
скомпилирован. Это указывает на ревизию
уровень возможностей компилятора /
синтаксис языка, который может продвигать
независимо от версии RTL.
CompilerVersion может быть протестирован в $ IF
выражения и должны быть использованы
вместо тестирования на VERxxx
условное определение. Всегда проверяйте на
больше или меньше известного
уровень ревизии. Это плохая идея
тест для определенного уровня ревизии.
Еще одна вещь, которую я регулярно делаю, это определение символа, когда он еще не определен (хорошо для прямой совместимости), например:
{$IF NOT DECLARED(UTF8String)}
type
UTF8String = type AnsiString;
{$IFEND}
Надеюсь, это поможет!