Компонент стека здесь: http://forum.hiasm.com//getfile/5878
Навести порядок... критику принял, но дело не в схеме, а в правильности применения потоков. Схема без потоков работает (на входе и выходе одинаковое количество данных, а с потоками данные теряются). Поскольку потоками обращаюсь на интуитивном уровне, нужен совет профи именно по ним.
------------ Дoбавленo в 14.57:
Вроде немного облагородил
Add(MultiElement,9607509,210,98)
{
@Hint=#29:Новый поток с теми же данными|
@Color=0
link(onEvent1,8633488:doEvent,[])
}
BEGIN_SDK
Add(EditMulti,15066390,21,21)
{
EventCount=1
WorkCount=2
Width=559
Height=256
link(doWork1,961680:doPush,[(59,27)(59,55)])
link(doWork2,9896476:doStart,[(53,34)(53,153)])
}
Add(Thread,2883,399,154)
{
@Hint=#20:Запуск нового потока|
Delay=0
FastStop=0
link(onExec,5641744:doData,[])
}
Add(DoData,5641744,455,154)
{
link(onEventData,15066390:onEvent1,[(569,160)(569,27)])
link(Data,14970407:Value,[(461,142)(401,142)(401,226)(342,226)])
}
Add(StackEx,961680,140,49)
{
StackType=0
Point(Count)
Point(onEmpty)
link(onPush,10743730:doEvent1,[])
link(onPop,9542663:doEvent1,[(247,62)(247,160)])
}
Add(If_else,4885084,266,126)
{
Op2=Integer(0)
link(onFalse,4260273:doWork3,[(303,139)(303,116)(219,116)])
link(Op1,13375041:Var,[(272,118)(153,118)])
}
Add(FTCG_Tools,10743730,315,49)
{
@Hint=#29:Автоизвлечение первой команды|
link(onEvent2,4260273:doWork1,[(359,55)(359,90)])
}
BEGIN_SDK
Add(EditMultiEx,15410738,21,21)
{
WorkCount=#36:doEvent1=Первое снятие с шапки стека|44:doData=Сброс на разрешение повторного снятия|
EventCount=#32:onEvent2=Происходит только 1 раз|
Height=242
link(doEvent1,7372775:doCompare,[(49,27)(49,104)])
link(doData,3439140:doData,[(42,34)(42,202)])
}
Add(FT_Memory,4786246,77,49)
{
Default=String(Pusk)
}
Add(FT_If_else,7372775,112,98)
{
Op2=String(Pusk)
link(onTrue,16015841:doEvent1,[])
link(Op1,4786246:Value,[(118,90)(83,90)])
link(Op2,3762355:Value,[(125,90)(132,90)])
}
Add(FT_Memory,3762355,126,49)
{
Default=String(Pusk)
}
Add(FT_Hub,16015841,161,98)
{
link(onEvent1,16748110:doData,[])
link(onEvent2,15410738:onEvent2,[(248,111)(248,27)])
}
Add(FT_Memory,6556541,196,49)
{
}
Add(FT_DoData,16748110,196,98)
{
link(onEventData,12599877:doWork1,[(240,104)(240,80)])
link(Data,6556541:Value,[])
}
Add(FT_Memory,11170075,63,147)
{
Default=String(Pusk)
}
Add(FT_DoData,3439140,63,196)
{
link(onEventData,12599877:doWork3,[(107,202)(107,142)(65,142)])
link(Data,11170075:Value,[])
}
Add(HubEx,12599877,61,74)
{
Angle=3
link(onEvent,4786246:doValue,[(65,55)])
}
END_SDK
Add(HubEx,4260273,215,84)
{
Angle=3
link(onEvent,961680:doPop,[(219,75)(128,75)(128,62)])
}
Add(Hub,8323232,182,119)
{
link(onEvent1,10743730:doData,[(256,125)(256,62)])
link(onEvent2,4885084:doCompare,[])
}
Add(Debug,13375041,147,98)
{
WEName=""
VDName="V steke"
LogCount=100
link(Data,961680:Count,[])
}
Add(Thread,9896476,84,147)
{
@Hint=#20:Запуск нового потока|
Delay=0
FastStop=0
link(onExec,8323232:doEvent1,[(149,153)(149,125)])
}
Add(Hub,9542663,322,154)
{
link(onEvent1,14970407:doValue,[(348,160)(348,174)(324,174)(324,188)])
link(onEvent2,2883:doStart,[(368,167)(368,160)])
}
Add(Memory,14970407,336,182)
{
}
END_SDK
Add(Sleep,5879541,273,98)
{
Delay=1000000
link(onSleep,9607509:doWork2,[(317,104)(317,108)(198,108)(198,111)])
}
Add(Button,11191553,91,63)
{
Left=90
Top=60
Data=String(fdgdfg)
link(onClick,2251004:doEvent,[(167,69)(167,104)])
}
Add(Debug,8633488,252,98)
{
WEName="Vishlo"
VDName=""
LogCount=100
link(onEvent,5879541:doSleepMks,[])
}
Add(Debug,2251004,175,98)
{
WEName="Voshlo"
VDName=""
LogCount=100
link(onEvent,9607509:doWork1,[])
}