Страницы

Поиск по вопросам

четверг, 21 марта 2019 г.

Почему при условии “false”, трассировка входит в блок “true”

Как-то не понятно отрабатывает трассировка кода:
begin if StrToInt(Edit1.Text) < 10 then begin showmessage('Hi'); exit; end; end;
при: "Edit1.Text = 20" и соответственно условие выдает false, компилятор тормозится на breakpoint строки "exit", но пропускает вывод сообщения. Когда по идее, в этот блок он вообще не должен попадать.


Ответ

Это оптимизация компилятора. Просто Exit; избыточен внутри блока begin..end в данном контексте. Добавьте строчку кода после первого end; и увидите, что все работает как надо.
begin if StrToInt(Edit1.Text) < 10 then begin showmessage('Hi'); exit; end; showmessage('Bye'); end;

Комментариев нет:

Отправить комментарий