Вверх ↑
Администрация
Ответов: 15295
Рейтинг: 1519
#1: 2007-08-08 12:36:07 ЛС | профиль | цитата
и так добрались до представления основного(базового) типа данных, используемого во всех элементах стандартного пакет HiAsm. Если коротко, то описание полей будет рпимерно таким:
data_type - хранит конкретный тип данных, заданный константами data_XXX(например: data_int, data_str, data_stream и т.д.)
idata, sdata, rdata - в одном из этих полей хранятся собственно данные в зависимости от их типа
Next - служебное поле МТ технологии(не должно использоваться пользователем)
ldata - служебное поле МТ технологии(не должно использоваться пользователем)

Подробнее о типах можно прочесть во второй половине статьи !Код_компонента!, а так же о том какие существуют ф-ции для их чтения. Знание об особенностях этой структуры носит чисто познавательный характер - пользователь обращаться к ним напрямую не должен

Усложним пример:
Add(InlineCode,11970995,140,147)
{
WorkPoints=#6:doWork|
EventPoints=#7:onEvent|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|23: onEvent:THI_Event;|5: |50: procedure doWork(var Data:TData; index:word);|5: end;|0:|14:implementation|0:|57:procedure THiAsmClass.doWork(var Data:TData; index:word);|5:begin|0:|4:end;|0:|4:end.|
}

Добавилась точка типа Event. Из опыта, полученного на предыдущих шагах, предполагается, что читающий должен самостоятельно суметь найти описание типа THI_Event(опять таки только в познавательных целях), а так же ф-ции, которые его используют(и которыми нам придется пользоваться в дальнейшем).

1) Какие функции _hi_XXX существуют(два основных типа)?
2) Какие основные параметры им передаются и для чего?
3) Привести простой пример дублирования потока в IC с точки doWork на точку onEvent. Т.е. пример:
Add(InlineCode,11970995,140,147)
{
WorkPoints=#6:doWork|
EventPoints=#7:onEvent|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|23: onEvent:THI_Event;|5: |50: procedure doWork(var Data:TData; index:word);|5: end;|0:|14:implementation|0:|57:procedure THiAsmClass.doWork(var Data:TData; index:word);|5:begin|0:|4:end;|0:|4:end.|
link(onEvent,13357553:doMessage,[])
}
Add(Button,7016514,91,147)
{
Left=90
Top=145
Data=String(hello)
link(onClick,11970995:doWork,[])
}
Add(Message,13357553,189,147)
{
}
должен выдавать диалоговое окно с надписью "hello"
карма: 27
0