# Константы

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

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

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

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

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

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

Именем константы может быть любая комбинация букв, цифр и `_`, которая не повторяет зарезервированные компилятором имена, такие как `Continue`, `Break`, `And` (см. файл `compiler.ini`). \
\
Значением константы может быть число (а также [имя модели](/ru/coding/data-types.md#imena-modelei) или [метка](/ru/coding/data-types.md#metki)), [строковый литерал](/ru/coding/data-types.md#strokovye-literaly), [переменная](/ru/coding/variables.md) (а также [свойство класса](/ru/coding/classes.md#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`.

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sannybuilder.com/ru/coding/constants.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
