Вверх ↑
Этот топик читают: Гость
Ответов: 356
Рейтинг: 31
#1: 2010-06-17 13:55:34 ЛС | профиль | цитата
После второго вызова doSeparateMT (в одном потоке - "Без хаба"), точка RemaindData выдаёт только одно звено оставшегося MT-потока.

Make(delphi)
ver(4.04 build 184)
Add(MainForm,2953706,315,210)
{
Position=1
}
Add(MT_MultiData,14203159,532,301)
{
Point(RemaindData)
link(onData2,8522642:doValue,[])
}
Add(Memory,2675351,315,308)
{
Default=String(11;12;13;14;15;16)
link(onData,839471:doMT,[])
}
Add(MT_String,839471,371,301)
{
link(onResult,9599153:doEvent,[])
}
Add(Button,4537399,371,210)
{
Left=218
Top=222
Width=63
Caption="Без хаба"
Data=Integer(0)
link(onClick,12233922:doWork1,[(415,216)(415,251)])
}
Add(Button,10252153,371,252)
{
Left=106
Top=222
Width=61
Caption="Через хаб"
Data=Integer(1)
link(onClick,12233922:doWork2,[])
}
Add(ChanelToIndex,12233922,427,245)
{
Point(Data)
link(onIndex,2675351:doClear,[(471,251)(471,290)(303,290)(303,321)])
}
Add(MT_IndexToChanel,9599153,427,301)
{
Point(Index)
link(onEvent1,14203159:doSeparateMT,[])
link(onEvent2,7469514:doEvent1,[(478,314)(478,363)])
link(Index,12233922:Data,[])
}
Add(MTStrTbl,8302891,616,210)
{
Left=94
Top=4
Width=202
Height=208
Name="MTStrTbl"
Columns=#1:1|1:2|1:3|1:4|1:5|1:6|
Scroll=1
ColumnWidth=33
}
Add(MST_RowAction,16662174,658,364)
{
MSTControl="MTStrTbl"
}
Add(MT_MultiMem,8522642,595,308)
{
Count=0
Point(Data)
link(onData,1616917:doWork1,[(641,314)])
link(Data,14203159:RemaindData,[(601,298)(576,298)(576,345)(538,345)])
}
Add(MT_MultiData,13181629,532,357)
{
Point(RemaindData)
}
Add(MT_MultiMem,13350649,532,413)
{
Count=0
Point(Data)
link(onData,1616917:doWork3,[(641,419)])
link(Data,13181629:RemaindData,[])
}
Add(Hub,7469514,497,357)
{
link(onEvent1,13181629:doSeparateMT,[])
link(onEvent2,13350649:doValue,[(521,370)(521,419)])
}
Add(HubEx,1616917,637,364)
{
link(onEvent,16662174:doRowAction,[])
}
Add(MST_Clear,11136145,553,210)
{
MSTControl="MTStrTbl"
}
Add(Button,12916751,490,210)
{
Left=148
Top=248
Width=103
Caption="Очистка таблицы"
Data=Integer(0)
link(onClick,11136145:doClear,[])
}
карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#2: 2010-06-17 14:04:25 ЛС | профиль | цитата
Комментарий к точке RemaindData писал(а):
Оставшийся МТ-поток после разложения

Или после окончания последнего события onDataX
------------ Дoбавленo в 14.04:
А одно звено, потому что в RemaindData копируется поток с указателем на следующее звено, однако память, на которую ссылается указатель, очищается в элементе MT_String, а значит будут запомнено только самое первое звено данных (все это видно из исходников компонентов и структуры TData)
карма: 10
1
Голосовали:olDjeka
Ответов: 356
Рейтинг: 31
#3: 2010-06-17 14:20:45 ЛС | профиль | цитата
Assasin писал(а):
Или после окончания последнего события onDataX

Как понять "после окончания"
[flood]
Assasin писал(а):
видно из исходников

Только тем кто в них разбирается [/flood]
карма: 0

0
Разработчик
Ответов: 26306
Рейтинг: 2146
#4: 2010-06-17 14:24:42 ЛС | профиль | цитата
Тут надо еще учесть тот момент, что в случае без хаба, данных на RemaindData еще не существует при использовании события с самой последней точки (как в схеме)
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#5: 2010-06-17 14:25:33 ЛС | профиль | цитата
olDjeka писал(а):
Как понять "после окончания"

В твоем примере окончание происходит перед вызовом события onEvent2 на хабе (как раз запоминается поток в RemaindData, и ты можешь его считать)
Или на бесхабовом варианте после добавления строки в таблицу
[flood]
olDjeka писал(а):
Только тем кто в них разбирается

[/flood]
------------ Дoбавленo в 14.25:
Да, точно, nesco, забыл об этом упомянуть
карма: 10
0
Разработчик
Ответов: 26306
Рейтинг: 2146
#6: 2010-06-17 14:26:50 ЛС | профиль | цитата
olDjeka, без хаба использовать RemaindData не рекомендуется, он и сделан специально для вертикального каскадирования, если надо пропустить N начальных данных, то надо использовать свойство From
карма: 22

1
Голосовали:olDjeka
Ответов: 758
Рейтинг: 112
#7: 2010-06-17 14:31:50 ЛС | профиль | цитата
code_18904.txt

замени на

code_18906.txt

карма: 1

0
файлы: 2code_18904.txt [241B] [147], code_18906.txt [109B] [149]
Разработчик
Ответов: 26306
Рейтинг: 2146
#8: 2010-06-17 14:35:52 ЛС | профиль | цитата
miver, для двух пропускаемых элементов прокатит, а если их 10-ть, или 20-ть, будешь гирлянду лепить До трех пропусков пойдет, дальше -- невыгодно, по количеству применяемых компонентов
карма: 22

0
Ответов: 758
Рейтинг: 112
#9: 2010-06-17 14:43:49 ЛС | профиль | цитата
nesco писал(а):
miver, для двух пропускаемых элементов прокатит, а если их 10-ть, или 20-ть, будешь гирлянду лепить До трех пропусков пойдет, дальше -- невыгодно, по количеству применяемых компонентов

Я не утверждал обратное
[offtop]Интересно, а если нужно скажем из цепочки в 50 элементов вытащить середину, скажем 10 элементов. Какое решение самое оптимальное [/offtop]
карма: 1

0
Разработчик
Ответов: 26306
Рейтинг: 2146
#10: 2010-06-17 14:52:50 ЛС | профиль | цитата
miver писал(а):
Интересно, а если нужно скажем из цепочки в 50 элементов вытащить середину, скажем 10 элементов. Какое решение самое оптимальное

Кстати, я об этом только что подумал. Очень простого решения я тут не вижу. Напрашивается, что-то наподобие, компонента MT_Separate. Единственное, что ограничивает его использование, так это, крайне редкая, надобность его применения
карма: 22

0
Ответов: 758
Рейтинг: 112
#11: 2010-06-17 15:04:56 ЛС | профиль | цитата
nesco писал(а):
Кстати, я об этом только что подумал. Очень простого решения я тут не вижу. Напрашивается, что-то наподобие, компонента MT_Separate. Единственное, что ограничивает его использование, так это, крайне редкая, надобность его применения

Очень частая задача. По крайней мере, у меня
Решаю ее пока что с помощью
 Add(Str_Enum,3943114,392,455)
{
}
Может кабели или типы могут решить эту задачу... Я с ними еще не работал

карма: 1

0
Разработчик
Ответов: 26306
Рейтинг: 2146
#12: 2010-06-17 17:24:01 ЛС | профиль | цитата
На SVN доступен новый компонент -- MT_Part, который разбивает MT-поток на две части в любом месте цепи
карма: 22

6
Голосовали:miver, olDjeka, Ivann, CriDos, sla8a, filyaxxxcom
12
Сообщение
...
Прикрепленные файлы
(файлы не залиты)