Вычисление логических выражений
всем привет!
почему при таком коде
почему при таком коде
var
ShowAdditional: Boolean;
begin
ShowAdditional := (Report.Variables['ShowAdditionalFields'] <> NULL) and <ShowAdditionalFields>;
выдается сообщение "неизвестная переменная или поле БД: ShowAdditionalFields"?
Комментарии
По существу в теме и в тексте два разных вопроса.
1) Да, по короткому
2) Потому что интерпретатор наткнулся на неизвестную ему переменную.
Проведём эксперимент. Немного видоизменим код таким образом:
Запускаем и видим: выдаётся сообщение "False", делается попытка построения отчёта (это хорошо видно при OldStyleProgress = True) и только потом происходит вылет с ошибкой о неизвестной переменной.
Теперь делаем так:
Вылет происходит сразу-же, поскольку он попытался получить значение несуществующей переменной, в отличие от первого примера. Т.е. в первом примере он обработал только первую часть выражения, получил False и на этом успокоился. Но интерпретатор всё-таки получил в обработку выражение с несуществующей переменной (что уж он там с ней делал, я не знаю) и вылетел.
А в итоге делать надо так:
В этом случае интерпретатор не получает строчку, помеченную "!!!", вообще, а следовательно не пытается обработать несуществующую переменную.