запуск метода (процедуры) по адресу
Добавлено: 12 Декабрь 2008, 12:38
c6.3
что то не могу пробится
суть.
есть класс
в нем много методов
в зависмости от задачи нужно запустить по очереди нескоько методов в определенном порядке.
на данный момент это сделано так, в queue записываются номера событий
ну и потом счтиваются записи по очереди
а какую процедуру запустить определяется по CASE (case получился очень длинный) ну и плюс ко всему, неудобно при разработке
описать соьбытие (EQUATE), в CASE связать событие с процедурой (если забыл то косяк),
Хотелось бы проще, в QUEUE запихиваем очередь из адресов процедур
а потом запускем их по очереди
близкое решение.. завалялся у меня чейто пример:
Member()
MAP
ExternalProcedure(),BYTE,TYPE
CallAddr(*ExternalProcedure),BYTE,PROC,NAME('CallAddr')
END
CallAddr Function(Ptr)
CODE
RETURN Ptr()
НО, если вызваем CallAddr(myprocedure) то все ок
если вызывать CallAddr(SELF.myMetod)
то клаша матерится уже во время компиляции, говорит что прототип не тот.
что то не могу пробится
суть.
есть класс
в нем много методов
в зависмости от задачи нужно запустить по очереди нескоько методов в определенном порядке.
на данный момент это сделано так, в queue записываются номера событий
ну и потом счтиваются записи по очереди
а какую процедуру запустить определяется по CASE (case получился очень длинный) ну и плюс ко всему, неудобно при разработке
описать соьбытие (EQUATE), в CASE связать событие с процедурой (если забыл то косяк),
Хотелось бы проще, в QUEUE запихиваем очередь из адресов процедур
а потом запускем их по очереди

близкое решение.. завалялся у меня чейто пример:
Member()
MAP
ExternalProcedure(),BYTE,TYPE
CallAddr(*ExternalProcedure),BYTE,PROC,NAME('CallAddr')
END
CallAddr Function(Ptr)
CODE
RETURN Ptr()
НО, если вызваем CallAddr(myprocedure) то все ок
если вызывать CallAddr(SELF.myMetod)
то клаша матерится уже во время компиляции, говорит что прототип не тот.