Ремесло программиста

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Ремесло программиста » AL-IV (Алфор) » Антирекурсия


Антирекурсия

Сообщений 1 страница 3 из 3

1

В AL-IV - единственная возможность обработать события визуальных элементов формы, это переопределить в своей форме соответствующие методы формы, например, click, key_press, mouse_move, timer и т.д.
Для случаев наследования контрольных элементов, некоторые события вызываются в самих контрольных элементах (например, движения мыши). Они так же реализованы как защищенные CALLBACK-методы.
Как и все методы, начинающиеся со строчной буквы, эти методы являются защищёнными. Они так же помечены маркером CALLBACK, т.е. не предназначены для вызова самим кодом пользователя. (Это ограничение не наследуется в производном классе, защищая только сам прототип метода от неправильного использования).
<...>
Если в вашем коде происходят какие-либо изменения формы, это может приводить к рекурсии в этом случае. Простейший способ обхода проблемы - установка дополнительного флажка (поля формы типы BOOL), на время операции. Например, оператором PUSH флажок = TRUE: ... ; И, конечно, отказом от входа в повторную обработку при установленном флажке. Псевдо-код:
BOOL flag|_working_now

OVERRIDE event_name:
    CASE flag ? ==> ; ▄▄▄▄▄
    PUSH flag = TRUE: ▄▄▄▄▄
        // YOUR CODE HERE █
    ; . ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█

Очевидно, это не трудно автоматизировать. Не хватает соотв. модификатора для наследуемой антирекурсии.
Под каким соусом следует подавать: в Делфи нужно заниматься вот этой ерундой, а тут в библиотечных компонентах за нас уже подумали.

2

Антирекурсии я тут не вижу. Обычное условие остановки рекурсии.

МихалНик написал(а):

в Делфи нужно заниматься вот этой ерундой, а тут в библиотечных компонентах за нас уже подумали.

В Delphi 1 строчка inherited method(); а тут аж целых 3!
Во-вторых совсем не понятно, что вы тут собрались автоматизировать и как?

3

Обычное условие остановки рекурсии.

Которое:
а) не очевидно
б) не нужно.

Антирекурсии я тут не вижу

Как там именно будет называться модификатор - не имеет значения.


Вы здесь » Ремесло программиста » AL-IV (Алфор) » Антирекурсия