Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2007-07-11 15:49:40 ЛС | профиль | цитата
Dilma писал(а):
Дошло: проблема при таком подходе в хабе. И во всех элементах, безусловно дублирующих входной поток

Не совсем так.
HUB - это бедный несчастный элемент, на которого всех собак вешают
В FASM-е, к примеру, его вообще заставили быть функциональным вызовом...

Внутри какого-то элемента, не HUB-а вовсе, может произойти (а может и нет, а может это и не разрешимо в Design-Time) вызов события c данными вовсе к данным потока не имеющим отношение.
И после этого произойдет использование данных потока.
А событие ДО могло и изменить один из параметров выражения.

Dilma писал(а):
Скажем счетчик цикла for не является volatile данными. Конкатенация строк должна перед выдачей в поток проверить на наличие такого флага у каждого операнда и присвоить его всему выражению, если он есть

Давай по порядку.
В вышеприведенном примере начинаем плясать от кнопки.
1) Вызывается doStrCat (нижний)
2) У него внутри идет обращение к верхней точке. Какие данные и с каким аттрибутом вернутся ???
3) Вызывается Result верхнего элемента - он увидел "подключенность" doStrCat и вернул ссылку на переменную, а не выражение
4) Причин в качестве аттрибута возвращать что-то экстраординарное вроде никаких, совершенно штатная ситуация. Мало ли куда его doStrCat подулючен...
5) В нижнем StrCat для Str2 - тоже все штатно.
6) Начинаем парсить выходное событие. Начинаем, а данных то и нет. В смысле - не все с ними ясно.

Но возможен иной вариант:
если по п.3 предыдущего списка мы взвели некий флажок (Using) для некой переменной (S) которая возвращается методом Result, ТОГДА - если при парсинге по п.7 мы напоролись на такой флажок, то это уже информативное событие. Переключаем флажок в состояние Chanded.

И только после парсинга, нам надо как-то узнать о состоянии этого флажка. Который до парсинга был установлен в Using. Снова вызывать событие Str1 - нельзя, мало ли какие коды при этом в каких блоках сгенерируются...
Но использовать это результат сравнения можно будет только на втором проходе

Т.е., однопроходных возможностей я совсем не понял....
карма: 9

0