2.5. Сообщения

На верх  Назад  Вперёд

Free Pascal позволяет вам определить предупреждения и сообщения об ошибках в вашем коде. Сообщения можно использовать для отображения полезной информации, такой как примечания о правообладателе, список идентификаторов, на которые реагирует ваш код и т. п.

Предупреждения могут быть использованы, если вы думаете, что какая-то часть вашего кода содержит ошибки, или если вы думаете, что некоторые идентификаторы бесполезны.

Сообщения об ошибках могут быть полезны, если вам нужен определённый идентификатор, чтобы предупредить о том, что какая-то переменная не определена, или если версия компилятора не соответствует вашему коду.

Компилятор воспринимает эти сообщения, как если бы они были сгенерированы компилятором. Это означает, что если предупреждающие сообщения отключены, то эти сообщения не будут отображаться. Ошибки отображаются всегда, а компилятор останавливается, если обнаружит 50 ошибок. После фатальной ошибки компилятор останавливается сразу.

Для сообщений используется следующий синтаксис:

{$Message TYPE Текст сообщения}

Где TYPE - это:

TYPE

Описание

NOTE

Выдается сообщение-замечание. Эквивалентно $NOTE.

HINT

Выдается сообщение-подсказка. Эквивалентно $HINT.

WARNING

Выдается сообщение-предупреждение. Эквивалентно $WARNING.

ERROR

Выдается сообщение-ошибка. Эквивалентно $ERROR.

FATAL

Выдается сообщение-фатальная ошибка. Эквивалентно $FATAL.

В качестве альтернативы можно использовать следующий вариант:

{$Info Текст сообщения}

Для примечаний:

{$Note Текст сообщения}

Для предупреждений:

{$Warning Текст предупреждения}

Для подсказок:

{$Hint Текст предупреждения}

Для ошибок:

{$Error Текст ошибки}

Для фатальных ошибок:

{$Fatal Текст ошибки}

или

{$Stop Текст ошибки}

Разница между сообщениями $Error и $FatalError или $Stop заключается в том, что при обнаружении ошибки компилятор продолжает работу. При обнаружении фатальной ошибки компилятор останавливается.

ПРИМЕЧАНИЕ

Вы не можете использовать символ '}' в ваших сообщениях, так как он воспринимается как закрывающая скобка сообщения.

Например, следующий фрагмент кода будет генерировать ошибку, если идентификаторы RequiredVar1 или RequiredVar2 определены:

{$IFNDEF RequiredVar1}
{$IFNDEF RequiredVar2}
{$Error Должен быть определён хотя-бы один параметр из Requiredvar1 или Requiredvar2 }
{$ENDIF}
{$ENDIF}

Но компилятор продолжит компиляцию. Однако при этом не будет создан файл модуля или программы, так как произошла ошибка.