Вверх ↑
Этот топик читают: Гость
Ответов: 66
Рейтинг: 1
#1: 2019-01-19 03:17:30 ЛС | профиль | цитата
Есть схемка, но из-за распаковки нескольких файлов получается довольно громоздкой, вопрос как это оптимально поместить в цикл или что-нибудь другое, требуется распаковывать разные потоки в разные файлы
Картинка

Редактировалось 1 раз(а), последний 2019-01-19 03:18:09
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Разработчик
Ответов: 26061
Рейтинг: 2120
#2: 2019-01-19 03:53:29 ЛС | профиль | цитата
Приблизительно так

Схема

Add(ZLIB,16662531,595,238)
{
link(onStream,3016088:doWork2,[])
}
Add(MemoryStream,415819,343,147)
{
}
Add(MemoryStream,14826283,385,147)
{
}
Add(MemoryStream,11438286,427,147)
{
}
Add(MemoryStream,7305550,469,147)
{
}
Add(GetIndexData,8427891,392,238)
{
Count=4
link(onIndex,13161610:doEvent1,[])
link(Data1,415819:Stream,[(398,229)(349,229)])
link(Data2,14826283:Stream,[(405,187)(391,187)])
link(Data3,11438286:Stream,[(412,201)(433,201)])
link(Data4,7305550:Stream,[(419,208)(475,208)])
}
Add(For,16576098,322,238)
{
End=3
link(onEvent,8427891:doIndex,[])
}
Add(FileStream,9038467,679,224)
{
Mode=1
AutoCopy=0
Point(doCopyFromStream)
link(FileName,432377:String,[])
}
Add(IndexToChanel,5812771,504,245)
{
Count=4
Point(Data)
link(onEvent1,13985541:doWork2,[])
link(onEvent2,4196674:doWork2,[])
link(onEvent3,4196674:doWork3,[(557,265)])
link(onEvent4,3016088:doWork3,[(585,272)(585,279)(655,279)])
link(Data,8427891:Var,[(510,236)(496,236)(496,285)(398,285)])
}
Add(HubEx,13985541,553,245)
{
link(onEvent,16662531:doDeCompress,[])
}
Add(HubEx,4196674,553,252)
{
Angle=3
link(onEvent,13985541:doWork3,[])
}
Add(HubEx,3016088,651,238)
{
link(onEvent,9038467:doCopyFromStream,[])
}
Add(StrList,432377,658,168)
{
Strings=#5:Name1|5:Name2|5:Name3|5:Name4|
Point(doGetString)
Point(String)
}
Add(Hub,13161610,441,238)
{
link(onEvent1,432377:doGetString,[(487,244)(487,202)])
link(onEvent2,5812771:doEvent,[])
}


В принципе, можно было еще прицепить StreamArray вместо всех этих MemoryStream, но тут надо весь алгоритм смотреть

Редактировалось 3 раз(а), последний 2019-01-19 04:27:37
карма: 22

0
Ответов: 66
Рейтинг: 1
#3: 2019-01-21 17:21:43 ЛС | профиль | цитата
nesco писал(а):

В принципе, можно было еще прицепить StreamArray вместо всех этих MemoryStream, но тут надо весь алгоритм смотреть

Спасибо, я даже не знал про то что есть массив стримов, вот что вышло
Add(FileStream,9038467,490,210){
Mode=1
AutoCopy=0
Point(doCopyFromStream)
link(FileName,432377:String,[])
}
Add(StrList,432377,469,154)
{
Strings=#5:Name1|5:Name2|5:Name3|
Point(doGetString)
Point(String)
Point(IdxToSelect)
link(IdxToSelect,15960117:Index,[(489,142)(414,142)(414,273)(356,273)])
}
Add(Hub,13161610,392,224)
{
link(onEvent1,432377:doGetString,[(426,230)(426,188)])
link(onEvent2,16662531:doDeCompress,[])
}
Add(ArrayEnum,15960117,343,224)
{
link(onItem,13161610:doEvent1,[])
link(Array,10206315:Array,[])
}
Add(ZLIB,16662531,434,224)
{
link(onStream,9038467:doCopyFromStream,[])
}
Add(StreamArray,10206315,343,168)
{
Streams=['Name1'=[],'Name2'=[],'Name3'=[]]
}

Либо так

Add(ZLIB,8827324,448,399){
link(onStream,9272481:doCopyFromStream,[])
}
Add(For,16576098,308,399)
{
IncludeEnd=1
link(onEvent,4853465:doRead,[])
link(End,7864330:Count,[(321,387)(370,387)])
}
Add(FileStream,9272481,504,385)
{
Mode=1
AutoCopy=0
Point(doCopyFromStream)
link(FileName,2190193:String,[])
}
Add(StrList,2190193,483,329)
{
Strings=#5:Name1|5:Name2|5:Name3|
Point(doGetString)
Point(String)
Point(IdxToSelect)
link(IdxToSelect,16576098:Position,[(503,315)(425,315)(425,443)(314,443)])
}
Add(Hub,15351585,406,399)
{
link(onEvent1,2190193:doGetString,[(436,405)(436,363)])
link(onEvent2,8827324:doDeCompress,[])
}
Add(ArrayRW,4853465,357,399)
{
link(onRead,15351585:doEvent1,[])
link(Array,7864330:Array,[])
}
Add(StreamArray,7864330,357,343)
{
Streams=['Name1'=[],'Name2'=[],'Name3'=[]]
}

Редактировалось 1 раз(а), последний 2019-01-21 17:22:09
карма: 0

0
3
Сообщение
...
Прикрепленные файлы
(файлы не залиты)