Показать сообщение отдельно
  #4  
Старый 13.06.2022, 18:37
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от TennisAdept
А флаг вводить зачем, если результат CollisionLineFromTRECT и так логический?

Флаг для того, что бы отделить логику принятия решения от кода проверки.
Флаг инициализируется значением, которое говорит, что коллизий нет.

Далее в цикле идет проверка на коллизии и на каждой итерации значение флага обновляется. Если коллизия найдена, то происходит прерывание цикла проверки.

Теперь имеем 2 ситуации при проверке - есть коллизии или их нет.
Как после цикла проверки узнать, были ли коллизии или нет? Вот тут мы снова возаращаемся к флагу.

В принципе, твоя реализация тоже будет работать. Но она более запутанная, хотя и делает все тоже самое. Т.О. путем введения всего лишь одного флага мы делаем код более читабельным, что помогает в отладке.
Например, мне потребовалось около 5 минут что бы понять, что делает твой код и проанализировать где там может быть проблема. В моей редакции, надеюсь, тебе потребовалось меньше минуты.
Ответить с цитированием