Вверх ↑
Этот топик читают: Гость
Ответов: 8930
Рейтинг: 823
#46: 2013-03-10 17:43:56 ЛС | профиль | цитата
nesco, спасибо, нашёл
Один поток на форму + по одному на каждую кнопку
ПятьПотоков.jpg
Ну надо же!
карма: 19

0
файлы: 1ПятьПотоков.jpg [36.1KB] [384]
Ответов: 1536
Рейтинг: 176
#47: 2013-03-10 19:10:18 ЛС | профиль | цитата
nesco, оказывается, мой предыдущий вариант с Thread показывает столько потоков, сколько я указываю. Ну, если верить счётчику потоков.
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Разработчик
Ответов: 26164
Рейтинг: 2127
#48: 2013-03-10 20:01:10 ЛС | профиль | цитата
ser_davkin писал(а):
оказывается, мой предыдущий вариант с Thread показывает столько потоков, сколько я указываю. Ну, если верить счётчику потоков.

Потоки созданы, но не работают как потоки, цепь их событий пустая -- точка onExec
карма: 22

0
Ответов: 824
Рейтинг: 138
#49: 2013-03-10 23:58:59 ЛС | профиль | цитата
Все, звиздец. Не могу найти ошибку в схеме.
Зациклился я, что ли. 3 дня сижу разбираю.
Через раз при нажатии кнопки "Анализировать" (после изменения числа потоков/контейнеров) разный результат....
code_30546.txt
Такое впечатление, что MathParse не успевает провести расчет.
А когда в контейнер впихиваю Thread, то при большом количестве строк вываливается ошибка, что доступ к такой то памяти запрещен...
При задействованном b]Thread[/b] и закрытии всех копий схем, в диспетчере задач висит 2 потока, а по идее должен быть 1 (форма).
Какой то поток не завершается...???

карма: 1

0
файлы: 1code_30546.txt [7.3KB] [221]
Ответов: 16884
Рейтинг: 1239
#50: 2013-03-11 00:05:24 ЛС | профиль | цитата
Перезалей схему.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 824
Рейтинг: 138
#51: 2013-03-11 00:10:38 ЛС | профиль | цитата
code_30547.txt
------------ Дoбавленo в 00.10:
Винда у меня х64
карма: 1

0
файлы: 1code_30547.txt [7.3KB] [198]
Разработчик
Ответов: 26164
Рейтинг: 2127
#52: 2013-03-11 00:12:56 ЛС | профиль | цитата
Вопрос -- зачем вот это, это же тоже поток, только системный, там достаточно обычный таймер для разделения события по времени

Add(MMTimer,9370637,581,616)
{
Interval=500
Enable=1
AutoStop=2
}


карма: 22

0
Ответов: 824
Рейтинг: 138
#53: 2013-03-11 00:21:03 ЛС | профиль | цитата
Почему то обычный таймер, у меня, при Enable = False, не включается методом doTimer
АААА блин - вот и второй поток!
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#54: 2013-03-11 00:57:13 ЛС | профиль | цитата
sashaoli, и исключи возможность повторного нажатия.
enknop.png
(добавь красные компоненты)
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1enknop.png [4.6KB] [350]
Ответов: 824
Рейтинг: 138
#55: 2013-03-11 02:02:41 ЛС | профиль | цитата
1.1 Создаем копию конт.1
1.2 Заполняем списком строк
2.1 Создаем копию конт.2
2.2 Заполняем списком строк
.......
....... и т.д. если нужно
3. Завершили заполнение всех копий.
4.1 Начинаем активировать все, по очереди, копии контейнера (в цикле по индексу)
4.2 Запускаем подсчет количества символов в имени файла (в том же цикле)
Цикл обработал и больше не нужен. Енд = количество копий контейнера.

------------ Дoбавленo в 01.43:
Событие onStop в данном сл. не нужно.
------------ Дoбавленo в 01.49:
Об Енд, последнюю границу не включаем (или исключаем)
------------ Дoбавленo в 01.54:
Tad писал(а):
sashaoli, и исключи возможность повторного нажатия.

Об этом тоже думал и сделал, ток когда схему копировал это осталось в стороне.
И как то уж не хотелось читать какой я зас...ц и че в схеме нагородил.
Так что, напугали Вы меня своими постами....
------------ Дoбавленo в 02.02:
Tad писал(а):
(добавь красные компоненты)

У меня было вот так:
Add(MainForm,12733091,287,245)
{
Width=374
Height=153
BorderStyle=1
}
Add(Edit,11641370,651,112)
{
Left=140
Top=15
Width=215
Enabled=1
ColorSp=-16777215
Text=""
ReadOnly=0
}
Add(Button,15167945,371,112)
{
Left=10
Top=15
Width=125
Caption="Папка для анализа"
Point(doEnabled)
link(onClick,5279826:doBrowse,[])
}
Add(Browse,5279826,420,112)
{
Title="Select Pack Folder"
NewStyle=0
NewDirButton=1
link(onBrowse,429033:doEvent1,[])
}
Add(MultiElementEx,859352,595,371)
{
@Hint=#35:Схема вызывается для каждого потока|
Mode=1
link(onEnd,15432256:doNext,[])
link(StringArray,11850414:Array,[])
}
BEGIN_SDK
Add(EditMultiEx,9781944,21,14)
{
WorkCount=#5:##add|8:##select|24:doStart=Запускает процес|7:##clear|
EventCount=#28:onEnd=Работа схемы завершена|29:onResult=Результат вычислений|
VarCount=#7:##count|6:Result|12:##eventIndex|
DataCount=#32:StringArray=Масив путей к файлам|0:|
Width=363
Height=186
HOffset=30
Point(##add)
Point(##select)
Point(##clear)
Point(##count)
Point(##eventIndex)
link(##add,4378916:doEnum,[(41,20)(41,55)])
link(doStart,4978134:doEvent1,[(31,34)(31,118)])
link(Result,7600485:Result,[(64,180)(314,180)])
}
Add(StrList,2252093,189,49)
{
Point(Stream)
Point(doLoadFromStream)
}
Add(ArrayEnum,965417,203,112)
{
link(onItem,4290383:doLength,[])
link(onEndEnum,9781944:onEnd,[(244,125)(244,20)])
link(Array,2252093:Array,[])
}
Add(ArrayEnum,4378916,51,49)
{
link(onItem,2252093:doAdd,[])
link(Array,9781944:StringArray,[])
}
Add(Length,4290383,252,112)
{
link(onLength,7600485:doCalc,[])
}
Add(MathParse,7600485,308,112)
{
MathStr="%1+%0"
Point(doClear)
link(onResult,9781944:onResult,[(348,118)(348,27)])
link(X1,4290383:Result,[(314,100)(290,100)(290,153)(258,153)])
}
Add(Check,11721219,77,112)
{
link(onEvent,13322131:doWork2,[])
}
Add(Thread,2316962,140,140)
{
FastStop=0
link(onExec,13322131:doWork3,[(186,146)])
}
Add(HubEx,13322131,182,112)
{
link(onEvent,965417:doEnum,[])
}
Add(Check,1223278,77,140)
{
Check=1
link(onEvent,2316962:doStart,[])
}
Add(Hub,4978134,42,112)
{
link(onEvent1,11721219:doWork,[])
link(onEvent2,1223278:doWork,[(66,125)(66,146)])
}
END_SDK
Add(Hub,3855596,469,315)
{
link(onEvent1,11850414:doAdd,[])
link(onEvent2,15446539:doNext,[])
}
Add(Button,9416412,280,308)
{
Left=235
Top=50
Width=120
Caption="Анализировать"
Point(doEnabled)
link(onClick,2547659:doEvent1,[])
}
Add(Label,8815368,672,217)
{
Left=175
Top=55
}
Add(CounterEx,15446539,497,322)
{
@Hint=#48:Счетчик максимального количества файлов в потоке|
Max=500
Point(onThroughMax)
Point(doReset)
Point(doMax)
Point(Max)
Point(onSet)
link(onThroughMax,2451939:doEvent1,[])
link(onSet,2451939:doEvent2,[])
}
Add(StrList,11850414,581,315)
{
@Hint=#31:Список файлов для одного потока|19:Для каждого - новый|
}
Add(UpDown,6202415,483,210)
{
Left=150
Top=50
Max=6
Min=1
Position=2
Point(doEnabled)
link(onPosition,3444203:doEvent1,[])
}
Add(FileSearch,12643089,511,126)
{
@Hint=#35:Количество файлов в выбранной папке|
TimeType=1
link(onSearch,11221319:doAdd,[])
link(onEndSearch,11258217:doWork1,[(578,139)])
}
Add(Edit,12850526,560,224)
{
Left=115
Top=50
Width=35
Enabled=1
Text="2"
}
Add(MathParse,6828647,602,210)
{
MathStr="trunc(%2/%1)+1"
ResultType=0
link(onResult,8996694:doEvent1,[])
link(X1,6202415:Position,[(608,198)(475,198)(475,257)(489,257)])
link(X2,11221319:Count,[])
}
Add(Hub,429033,469,112)
{
OutCount=3
link(onEvent1,11641370:doText,[])
link(onEvent2,11221319:doClear,[(583,125)(583,139)])
link(onEvent3,12643089:doSearch,[])
}
Add(Hub,8996694,644,210)
{
link(onEvent1,14983954:In,[])
link(onEvent2,8815368:doText,[])
}
Add(Label,7620334,427,224)
{
Left=15
Top=55
Width=90
Height=17
Caption="Number of threads"
}
Add(LineBreak,3339554,455,336)
{
@Color=65535
Caption="MC"
Color=16711935
link(Out,15446539:doMax,[])
Primary=[14983954,259,-126]
}
Add(Hub,15965135,525,378)
{
link(onEvent1,12511257:doWork2,[])
link(onEvent2,859352:doStart,[])
}
Add(StyleXP,5108433,287,161)
{
}
Add(MathParse,13262560,679,483)
{
DataCount=1
MathStr="%1+%0"
ResultType=0
Point(onError)
Point(doClear)
link(onResult,6165163:doText,[])
link(X1,859352:Result,[(685,440)(608,440)])
}
Add(Label,15987890,777,483)
{
Left=15
Top=90
Width=59
Height=17
Caption="Результат:"
}
Add(Label,6165163,728,483)
{
Left=80
Top=90
}
Add(Hub,2547659,336,308)
{
OutCount=4
link(onEvent1,7243684:In,[(360,314)(360,307)])
link(onEvent2,1:doEnum,[])
link(onEvent3,15877871:In,[])
link(onEvent4,9795724:doFor,[(357,335)(357,384)])
}
Add(For,9795724,469,378)
{
@Hint=#31:Цикл запуска процесса в потоках|
IncludeEnd=1
link(onEvent,15965135:doEvent1,[])
link(End,9685680:Var1,[(482,366)(516,366)(516,416)])
}
Add(LineBreak,10306176,651,385)
{
@Color=11184895
Caption="1"
Color=12632256
link(Out,16695648:doData,[])
Primary=[15877871,-280,-63]
}
Add(GetDataEx,9685680,595,411)
{
link(Data,859352:##count,[])
}
Add(ArrayEnum,1,413,315)
{
link(onItem,3855596:doEvent1,[])
link(onEndEnum,15446539:doReset,[(458,328)(458,335)])
link(Array,8198231:Var,[])
}
Add(LineBreak,4449706,91,427)
{
Caption="5"
Color=8421376
link(Out,16543835:doOn,[(131,433)(131,426)])
Primary=[2198194,644,147]
}
Add(For,13304746,588,476)
{
@Hint=#31:Цикл запуска процесса в потоках|
IncludeEnd=1
link(onEvent,5379219:doEvent1,[])
link(onStop,11085601:doEvent1,[(630,489)(630,552)])
link(End,9685680:Var2,[])
}
Add(Hub,312411,546,469)
{
link(onEvent1,13262560:doClear,[(574,475)(574,515)(666,515)(666,496)])
link(onEvent2,13304746:doFor,[])
}
Add(StrList,11221319,602,126)
{
@Hint=#31:Список файлов для одного потока|19:Для каждого - новый|
}
Add(LineBreak,9606102,616,182)
{
Type=1
Color=65535
link(Data,11221319:Array,[])
Primary=[8198231,-203,105]
}
Add(Message,14191532,777,546)
{
Message="Таки да, все посчитано."
}
Add(LineBreak,5140787,504,469)
{
Caption="2"
Color=15780518
link(Out,312411:doEvent1,[])
Primary=[2607644,322,-98]
}
Add(Hub,5379219,637,476)
{
link(onEvent1,12511257:doWork3,[(663,482)(663,431)(582,431)])
link(onEvent2,13262560:doCalc,[])
}
Add(HubEx,12511257,578,378)
{
link(onEvent,859352:##select,[])
}
Add(Hub,11085601,637,546)
{
link(onEvent1,14191532:doMessage,[])
link(onEvent2,15681245:doTimer,[])
}
Add(LineBreak,3286171,546,392)
{
Caption="3"
Color=12639424
link(Out,859352:##clear,[])
Primary=[10499267,189,161]
}
Add(Switch,16543835,140,406)
{
DataOn=Integer(1)
DataOff=Integer(0)
Default=0
Point(onOn)
Point(onOff)
Point(doOn)
link(onSwitch,10544480:doEvent1,[])
}
Add(Hub,10544480,182,406)
{
OutCount=4
link(onEvent1,15167945:doEnabled,[(207,412)(207,118)])
link(onEvent2,6202415:doEnabled,[(226,419)(226,223)])
link(onEvent3,9416412:doEnabled,[(238,426)(238,314)])
}
Add(LineBreak,2807941,91,406)
{
Caption="4"
Color=65280
link(Out,16543835:doReset,[(131,412)(131,419)])
Primary=[7243684,280,-105]
}
Add(If_else,11639316,784,371)
{
link(onTrue,2607644:In,[])
link(Op2,15432256:Max,[(797,359)(776,359)(776,416)(748,416)])
}
Add(DoData,16695648,693,385)
{
link(onEventData,15432256:doMax,[])
link(Data,9685680:Var3,[(699,367)(648,367)(648,416)])
}
Add(CounterEx,15432256,735,371)
{
Min=1
Max=10000
Point(doReset)
Point(doMax)
Point(onThroughMax)
Point(Max)
link(onNext,11639316:doCompare,[])
}
Add(Hub,2451939,539,329)
{
InCount=2
link(onEvent1,859352:##add,[(574,335)(574,377)])
link(onEvent2,11850414:doClear,[(567,342)(567,328)])
}
Add(Hub,3444203,525,210)
{
link(onEvent1,11258217:doWork2,[])
link(onEvent2,12850526:doText,[(549,223)(549,230)])
}
Add(HubEx,11258217,574,210)
{
link(onEvent,6828647:doCalc,[])
}
Add(Hub,12912098,707,553)
{
link(onEvent1,10499267:In,[])
link(onEvent2,2198194:In,[(728,566)(728,580)])
}
Add(MMTimer,15681245,665,553)
{
Enable=1
AutoStop=2
link(onTimer,12912098:doEvent1,[])
}


карма: 1

0
Ответов: 1536
Рейтинг: 176
#56: 2013-03-11 08:59:46 ЛС | профиль | цитата
sashaoli писал(а):
А когда в контейнер впихиваю Thread, то при большом количестве строк вываливается ошибка
nesco писал(а):
там достаточно обычный таймер для разделения события по времени
sashaoli,
Читай посты внимательнее!
Откажись от использования MMTimer - часто вываливается ошибка.
Вместо MathParse, в качестве сумматора используй простой Math. Да и вообще, если это одно простое действие.
И вот, взгляни на время:
Add(MainForm,12733091,224,63)
{
Width=246
Height=165
BorderStyle=1
link(onCreate,16346453:doFor,[])
}
Add(StrList,13182271,357,77)
{
}
Add(For,16346453,273,77)
{
End=3000
link(onEvent,13182271:doAdd,[])
}
Add(ArrayEnum,1,371,147)
{
link(onItem,4749539:doAdd,[])
link(onEndEnum,3655824:doStop,[(413,160)(413,189)(215,189)(215,153)])
link(Array,13182271:Array,[])
}
Add(TimeCounter,3655824,224,140)
{
Precision=1
link(onStart,921329:doEvent1,[])
link(onStop,6548200:doText,[])
}
Add(Hub,6268687,182,224)
{
link(onEvent1,3655824:doStart,[(207,230)(207,146)])
link(onEvent2,5940093:doStart,[])
}
Add(TimeCounter,5940093,224,231)
{
Precision=1
link(onStart,14533911:doText,[])
link(onStop,6626899:doText,[])
}
Add(Label,6548200,266,147)
{
Left=130
Top=35
}
Add(Label,6626899,266,238)
{
Left=130
Top=75
}
Add(Button,9205517,133,224)
{
Left=60
Top=55
link(onClick,6268687:doEvent1,[])
}
Add(StrList,4749539,434,147)
{
}
Add(StrList,14533911,357,210)
{
link(onChange,5940093:doStop,[(398,216)(398,289)(214,289)(214,244)])
link(Str,13182271:Text,[])
}
Add(Hub,921329,315,140)
{
link(onEvent1,4749539:doClear,[(417,146)(417,160)])
link(onEvent2,1:doEnum,[])
}
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 5227
Рейтинг: 587
#57: 2013-03-11 10:42:54 ЛС | профиль | цитата
run -> xcopy /?
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Разработчик
Ответов: 26164
Рейтинг: 2127
#58: 2013-03-11 10:57:34 ЛС | профиль | цитата
andrestudio писал(а):
run -> xcopy /?

Фи. Это же не интересно
карма: 22

0
Ответов: 824
Рейтинг: 138
#59: 2013-03-11 11:24:00 ЛС | профиль | цитата
ser_davkin писал(а):
Да и вообще, если это одно простое действие.

В дальнейшем предполагается использовать в место простых арифметических действий более сложные.
Пока не отработаю на этом примере стабильное и правильное функционирование, усложнять схему не имеет смысла.
Тем более "истче" в процессе изучения компонентов и их поведения.
Схемку посмотрю, когда приду домой (17:00 по Киеву), сейчас на работе.
andrestudio писал(а):
run -> xcopy /?

Хорошая утилита, только у меня HiAsm есть.
карма: 1

0
Ответов: 5227
Рейтинг: 587
#60: 2013-03-11 13:31:42 ЛС | профиль | цитата
sashaoli писал(а):
Хорошая утилита, только у меня HiAsm есть.
дык и у меня есть code_30553.txt

nesco писал(а):
Фи. Это же не интересно
ты прав, в нашем деле самое главное по пуще заеба..ся
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
файлы: 1code_30553.txt [1.4KB] [209]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)