Вверх ↑
Ответов: 4621
Рейтинг: 746
#1: 2018-10-30 12:51:17 ЛС | профиль | цитата
Galkov писал(а):
Рекомендации коллеги Netspirit-а придают некоторую уверенность.
Я тут только предложил конкретную реализацию данного решения. А вот как оно стыкуется с остальными компонентами FTCG - я не очень в курсе.

Я понимаю так. Контейнер FTCG_Tools создаёт один модуль с одним классом. В этом классе есть один блок переменных класса (BLK_PRIV_VAR). На каждый входной метод контейнера создаётся один метод в этом классе. В каждом методе делается доступным свой блок локальных переменных (LOC_VARS).
Проблема заключается в следующем. Компонент не может прописать локальную переменную метода во время своего Init(), потому что блок LOC_VARS во время Init() может быть один, а во время выполнения методов компонента - совсем другой.
Значит локальную переменную он должен писать в блок только при выполнении методов компонента, которые эту переменную используют. А раз так, то при вызове такого метода компонента несколько раз он запишет эту переменную столько же раз. Значит, компоненту каждый раз нужно знать писал ли он уже эту переменную в данный конкретный блок LOC_VARS или нет. Тогда предложенное мной решение подходит - функция создания локальной переменной проверяет её наличие. Пока что не вижу каких-то проблем.

Возможным другим способом решения будет необходимость в каждом компоненте для каждой локальной переменной вести массив имен блоков LOC_VARS, в которые он уже записал эту переменную, и искать в этом списке текущий блок LOC_VARS. Это очень накладно.
карма: 26

0