Вверх ↑
Этот топик читают: Гость
Ответов: 9906
Рейтинг: 351
#46: 2006-10-21 19:15:46 ЛС | профиль | цитата
iarspider писал(а):
Э-э... А мона примерчик? Если это что-то простое, то можно будет поправить текст урока

------ Добавлено в 18:30
Про "автомобиль" я понимаю, это когда обращение к массиву идёт (прочитал в справке). А паровоз?

1) Примерчик то можно, но это не очень простое. И визуального отображения пожалуй не имеет.
Обычный вызов события в кодах - это вызов _hi_onEvent, и возврата не будет, пока ветка оработана не будет. после этого можно чистить какие-нибудь Bitmap-ы, вызывать другие события.
А если в конце (именно в конце) вызвать _hi_CreateEvent, то реально НИЧЕГО вызываться не будет. А будет тот самый возврат новых данных (с приаттаченной ссылкой на метод) назад с машинистом. И тот _hi_onEvent, который вызывает этот метод (какая-то предыдущая "станция" ), смекнет, что закончилось еще не все, и выполнит таки недоделанную работу.
Получается, что в таком примере
Add(Button,11917483,84,105)
{
Left=80
Top=60
link(onClick,13599584:doWork2,[])
}
Add(Counter,14825531,154,105)
{
link(onNext,11645473:doCompare,[])
}
Add(If_else,11645473,217,105)
{
Type=1
Op2=Integer(1000000000)
link(onTrue,13599584:doWork1,[(259,111)(259,88)(137,88)])
}
Add(HubEx,13599584,133,98)
{
link(onEvent,14825531:doNext,[])
}
метод doCompare вызывается не onNext-ом, а onClick-ом. Аналогично "уговариваются" onTrue и onFalse - их тоже оказывается вызывает onClick.
И циркулировать будет сколько хочешь...

2) Про Array - это было давно и не правда Сегодя пожалуй это умеет делать только !MathParse! - там пример есть ....
Из IC - это вызов _ReadData - ф-ии
карма: 9

0
Ответов: 5446
Рейтинг: 323
#47: 2006-10-21 21:19:54 ЛС | профиль | цитата
1) Хм... Это, по-моему, рушит всю стройную картинку 5го урока...

Так. Попробую понять. По нынешней схеме событие onTrue вообще-то не должно вызваться, т.к. "стрелка" hubEx закрыта. Но оказывается, что doNext машинист едет "домой", и отвозит туды ссылку на doCompare. По возвращении он снова едет, на этот раз "экспрессом" к doCompare, где опять разворачивается с ссылкой на hubex.dowork1 (а по сути - на doNext, ибо "Ex"), и оттуда опять едет по ссылке doNext. Цикл повторяется.

Так?
карма: 1

0
Ответов: 9906
Рейтинг: 351
#48: 2006-10-21 21:40:40 ЛС | профиль | цитата
Вроде именно так
А "стрелка" hubEx в реальности не закрыта.
Просто раньше такое благополучно отваливалось по переполнении стека
карма: 9

0
Ответов: 16884
Рейтинг: 1239
#49: 2006-10-22 01:27:18 ЛС | профиль | цитата
iarspider,
Hub (HubEx) - это (сложная) стрелка с семафором
= скорее это узловая станция с несколькими составами загруженными одинаковым грузом(одна точка входа и несколько выходов) или с разными грузами (несколько точек входа и одна выхода) и т.д.. Первый поезд дошел до конца ветки и на узловой получили сигнал для отправки следующего. Наглядно для начинающих, и даже очень.
А Galkov пустил поезд по кругу и радуется , что у его ветки нет конца (круг он и в Африке круг), а это элементарная ошибка при составлении схемы, а не глюк HiAsma. Такое можно устроить в любом языке програмирования.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 9906
Рейтинг: 351
#50: 2006-10-22 01:53:17 ЛС | профиль | цитата
Tad писал(а):
а это элементарная ошибка при составлении схемы

Я позволю себе тебя огорчить.
1) Данная ошибка не всегда настолько элементарна, что ее можно обнаружить невооруженным глазом. В качестве HubEx может выступать любой элемент с левой DPE-частью. К примеру, ChanelToIndex
Да и никто не исключает, что не будет написан элемент, ДВА разных метода которого вызывают ОДНО событие.
И все то же самое можно говорить про "автомобильчики".

2) Существует класс задач (рекурсивные), которые иначе как "кольцеванием" в сегодняшнем HiAsm не решаются.
http://www.hiasm.hexshock.com/xf/topic.php?p=32051#P32051
Каким бы противником "кольцевания" я не был.


Какой из этого может быть выход для юзера, которому АБСОЛЮТНО противопоказано лезть в коды

Проверять трассировку в "реальном времени" с помощью отладочного режима - другого не вижу

карма: 9

0
Ответов: 16884
Рейтинг: 1239
#51: 2006-10-22 09:33:41 ЛС | профиль | цитата
Ну, во первых, iarspider говорил о применении Хабов, а не о кольцевании. И у него все было описано верно и очень даже наглядно и доступно. Не хватало только примечания, что с помощю Хаба (и не только) очень легко можно закольцевать схему (пустить паровоз по кругу) и что этого нужно избегать, т.к. при неверной организации выхода из кольца (цикла) можно получить "вечный" цикл, выход из которого - кнопка Reset или вилка шнура компа.
Так что iarspider, продолжайте дальше. Успехов
З.Ы. А для организации "вечных циклов" (например: бегущей по Label строки ) использовать Timer. Но это уже для описания работы и применения компонента Timer.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 9906
Рейтинг: 351
#52: 2006-10-22 10:18:50 ЛС | профиль | цитата
Tad, надеюсь, ты не заподозрил меня в неумении создавать "вечные" циклы

Я давал примеры, чтобы продемонстрировать:
1) НЕ всегда это приводит к краху программы. Хотя, до внедрения _hi_CreateEvent, первый пример - отваливался.
2) Второй пример - попробуйте сделать его без "кольцевания". Хотя я и сторонник иного (не релизованного сегодня) способа реализации рекурсий.

Про глюк/не глюк: то, что определить факт "кольцевания" сегодня "на глаз" (не заглядывая в коды) фактически невозможно - НЕ ЕСТЬ хорошо.
карма: 9

0
Ответов: 16884
Рейтинг: 1239
#53: 2006-10-22 10:54:41 ЛС | профиль | цитата
Galkov, - с п.1 и п.2 полностью согласен и с тем,что нужно
Проверять трассировку в "реальном времени" с помощью отладочного режима - другого не вижу
тоже и
не заподозрил меня в неумении создавать "вечные" циклы
конечно нет , но iarspider-а с толку то сбил , хотя его идея с железными и автодорогами мне понравилась - есть и дороги(потоки) и данные(грузы). Для людей, не знакомых с програмированием, очень даже наглядно.
Реализация рекурсий - это тема для Galkov-а, когда он будет писать Урок № ХХХ "Организация рекурсий в HiAsm" .
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 5446
Рейтинг: 323
#54: 2006-10-22 13:11:00 ЛС | профиль | цитата
Tad, благодарю за столь высокую оценку текста, родившегося посреди ночи (первая версия была составлена на КПК в 2 часа ночи )! Буду продолжать дальше.
карма: 1

0
Ответов: 3514
Рейтинг: 184
#55: 2006-10-22 13:35:34 ЛС | профиль | цитата
Прочитав всё это ятак и непонял, каким образом связаны тачки и паровозы и КАК из тачки или паровоза) сделать паровоз (или тачку) Для меня потоки остались "этими хернями"
карма: 0
0
Ответов: 16884
Рейтинг: 1239
#56: 2006-10-22 14:08:37 ЛС | профиль | цитата
Астрамак, тачки и паровозы связаны только через грузчиков (как и в жизни)
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 3514
Рейтинг: 184
#57: 2006-10-22 15:21:03 ЛС | профиль | цитата
))) Дибилизм какойто)) Ну правда.. думаю когда хиасм создавался представления о потоках были другими..
карма: 0
0
Ответов: 5446
Рейтинг: 323
#58: 2006-10-22 15:54:37 ЛС | профиль | цитата
Астрамак, грузовики ("тачки") и паровозы связаны через специальные станции. Для переноса с паровоза на грузовик используется Memory, для обратного переноса - DoData.
Пример:

code_474

При нажатии на верхнюю кнопку соства доходит до Hub-а, оставляет там копию своих данных и идёт на верхнюю "ветку". На этой "ветке" в состав погружается строка "делай РАЗ!" (в компоненте DoData), потом эта строка заносится в Memory (это, напомню, узел прерноса ЖД-> Авто). Затем состав возвращается на Hub, где забирает "старые" данные (те, которые он имел в момент входа в Hub), и идёт на нижнюю "ветку". Когда он прибывает на станцию Label, то Label посылает "грузовик" к Memory, где он получает строку "Делай РАЗ!". Так как грузовик возвращается не пустым, то данные из поезда игнорируются.

При нажатии на нижнюю кнопку поезд прибывает на "полустанок" DoData. По прибытии его туда с DoData отправляется грузовик к (соответствующей) Memory, откуда возвращается со строкой "Делай ДВА!", которую перегружает на поезд. Дальше поезд прибывает на станцию Label. Так как "дороги" от разгрузочной зоны Text компонента Label нет, то используются данные из поезда.
карма: 1

0
файлы: 1code_474.txt [784B] [384]
Ответов: 8891
Рейтинг: 823
#59: 2006-10-22 16:21:42 ЛС | профиль | цитата
Астрамак, iarspider, к рассуждению о ЖД: в 6-ти летнем возрасте у меня появился карманный фонарик с "плоской" батарейкой; естественно, я вытащил и батарейку и лампочку, помигал немного лампочкой непосредственно на батарейке и решил попробовать большую "лампу Ильича" - не горит. Получил образное разъяснение от матери - если в поезд запрячь лошадь, не повезёт! Сам думаю: а если к паровозу подцепить телегу, ох и помчится. Дождался, когда мать ушла на работу, поставил табуретку на стол, вывернул горячую лампу и всунул вместе с пальцами в патрон маленькую лампочку от фонарика. Фейерверк был, а я оказался под столом и сидел там до прихода матери с работы! - образные сравнения не всегда помогают.
карма: 19

0
Ответов: 3514
Рейтинг: 184
#60: 2006-10-22 16:35:39 ЛС | профиль | цитата
Точно
карма: 0
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)