При вызове функции проверяется, чему равно значение переданного в нее булевого выражения
ехрr. Если оно равно True, то ровным счетом ничего не происходит. Если же оно равно
False, создается ИС EAssertionFailed. Все это было бы довольно тривиально с точки зрения уже изученного, если бы не два обстоятельства:
1. Предопределенный обработчик EAssertior.Failed
устроен таким образом, что выдает не шестнадцатеричный адрес ошибки, а имя файла с исходным текстом и номер строки, где произошла ИС, как показано на рис. 3.4.
Рис. 3.4. Окно сообщения
обработчика исключительной ситуации EAssertionFailed
2. При помощи специальной директивы компилятора
{$ASSERTIONS ON/OFF} (или, что то же самое,
{$с+}/{$с-}) возникновение этих ИС можно
централизованно запретить. То есть в отлаживаемом коде в режиме {$с+}
можно расставить вызов Assert во всех
сомнительных и проверяемых местах. Когда же придет время генерации конечного
варианта кода, переключением директивы на {$c-}
весь отладочный вывод запрещается.
Знаете ли Вы, что модульность - это такая организация объектов, когда они заключают в себе полное определение их характеристик, никакие определения методов и свойств не должны располагаться вне его, это делает возможным свободное копирование и внедрение одного объекта в другие.