# Константы

**Константа** представляет собой имя, которому соответствует определенное значение. Имя переменной должно быть уникальным в текущем контексте компилирования (основной файл и все [подключенные](https://docs.sannybuilder.com/ru/directives#usdinclude) файлы).

При компиляции имя константы заменяется на то значение, которое ей было присвоено, например число или строку. В отличие от переменных значение константы не может меняться.

Костанты объявляются статически или динамически. Каждый [режим редактирования](https://docs.sannybuilder.com/ru/edit-modes) может загрузить статические определения констант из внешнего файла при помощи параметра `<constants>` в `modes.xml`. Динамические определения создаются в скрипте при помощи синтаксиса, описанного ниже.

## Объявление констант

Чтобы объявить в коде новую константу, используйте ключевое слово `const`:

```pascal
const <имя константы> = <значение>
```

Именем константы может быть любая комбинация букв, цифр и `_`, которая не повторяет зарезервированные компилятором имена, такие как `Continue`, `Break`, `And` (см. файл `compiler.ini`). \
\
Значением константы может быть число (а также [имя модели](https://docs.sannybuilder.com/ru/data-types#imena-modelei) или [метка](https://docs.sannybuilder.com/ru/data-types#metki)), [строковый литерал](https://docs.sannybuilder.com/ru/data-types#strokovye-literaly), [переменная](https://docs.sannybuilder.com/ru/coding/variables) (а также [свойство класса](https://docs.sannybuilder.com/ru/classes#svoistva)), другая константа.

Например,

```pascal
const x = 5
```

Чтобы объявить несколько констант сразу, разделите определения запятой:

```pascal
const a = 1, b = 2, c = 3
```

Если вы предпочитаете многострочные определения, используйте конструкцию `CONST..END`:

```pascal
const
    a = 1
    b = 2
    c = 3
end
```

Более сложный пример:

```pascal
var
   $PLAYER_CHAR: Player
end

const
    MoneyRequired = 30
    PlayerMoney = $PLAYER_CHAR.Money
end

if
    PlayerMoney > MoneyRequired
then
    PlayerMoney += -1
end
```

Во время компиляции константа `MoneyRequired` будет заменена на число `30`, а `PlayerMoney` на `$PLAYER_CHAR.Money`.

Если [языковая служба](https://docs.sannybuilder.com/ru/editor/language-service) включена, список констант можно увидеть при нажатии `Ctrl+пробел`.
