Вверх ↑
Этот топик читают: Гость
Ответов: 952
Рейтинг: 4
#1: 2011-11-28 02:59:35 ЛС | профиль | цитата
Появилась необходимость в создании запускалки небольшой кучки программ.
Штук 7-8. Находятся в разных папках. Некоторым для запуска требуются параметры запуска в виде ИП-адреса.
Так же обязательна задержка между стартом программ. Регулируемая задержка.
Набросал пока такую схемку, но что то она не работает похоже. Да и перебор строк идет моментальный.
По очереди их нельзя никак перебрать?

code_25995.txt

Может я в корне неверно подхожу к этому вопросу?
карма: 0

0
файлы: 1code_25995.txt [1.8KB] [184]
Администрация
Ответов: 15295
Рейтинг: 1519
#2: 2011-11-28 04:00:46 ЛС | профиль | цитата
перебор строк останавливается сразу же, после получения первого элемента, поэтому и
user_asm писал(а):
но что то она не работает похоже. Да и перебор строк идет моментальный.

карма: 27
0
Ответов: 952
Рейтинг: 4
#3: 2011-11-28 08:41:18 ЛС | профиль | цитата
Если убрать остановку перебора то он идет моментально. Т.е. я в элементах вижу только последнюю строку. И то не в элементах а по бряку. Почему то в Эдитах не появляются части разбитой строки. Хотя по брякам между ними я отчетливо вижу их части.
карма: 0

0
Разработчик
Ответов: 26164
Рейтинг: 2127
#4: 2011-11-28 09:06:03 ЛС | профиль | цитата
user_asm писал(а):
Т.е. я в элементах вижу только последнюю строку

А ты хотел увидеть там последовательно все А не получится, тк стоит таймер, и даются последовательные команды на запуск таймера. После первого пуска, за ним сразу же идет второй и тд. Таймер не будет хдать выполнения команды, его события происходят совсем из другой очереди, через определенное время, за это время можно 100 раз таблицу перечитать. Так как ты сделал, делать нельзя, нужен другой подход, к примеру, порождение контейнеров с внутренним таймированием
карма: 22

0
Ответов: 3889
Рейтинг: 362
#5: 2011-11-28 10:18:39 ЛС | профиль | цитата
user_asm, Предвосхищая вопросы: два таймера потому, что иногда замечен глюк - ветка после таймера не срабатывала, предположительно из-за изменения параметров таймера самим собой, в общем, цепочка из двух таймеров работает без проблем, посему такой индусский код решено оставить в том виде, как есть. [flood]Интересующиеся могут удалить второй таймер и сообщить о результатах и своих соображениях по поводу причин.[/flood] Второй вопрос, возможно, был бы "зачем запускать cmd.exe". Чтобы гарантированно что-то запустилось и не оборвалась цепочка запусков при недействительной строчке или строке с проблемами, кроме того, такой трюк даёт прямой доступ к командам интерпретатора.

Add(MainForm,9425885,203,280)
{
link(onCreate,3173145:doOperation,[])
}
Add(StrList,5491812,441,203)
{
Strings=#16:3000;notepad.exe|16:6000;mspaint.exe|
}
Add(ArrayRW,3111282,455,287)
{
Point(Count)
link(onRead,8509480:doSplit,[])
link(Array,5491812:Array,[])
}
Add(Timer,10070692,588,287)
{
Interval=1
Enable=1
AutoStop=1
Point(doInterval)
link(onTimer,16452214:doTimer,[])
}
Add(StrPart,8509480,504,287)
{
Char=";"
link(onSplit,5476655:doValue,[(543,293)(543,251)])
link(onPart,5156882:doEvent1,[])
}
Add(Hub,5156882,546,294)
{
OutCount=3
link(onEvent1,10070692:doStop,[])
link(onEvent2,10070692:doInterval,[])
link(onEvent3,10070692:doTimer,[(588,293)])
}
Add(Hub,4062538,343,294)
{
link(onEvent1,2143230:doMax,[])
link(onEvent2,12645077:doWork3,[(384,307)])
}
Add(LineBreak,6636619,448,259)
{
Type=1
link(Data,5491812:Count,[])
Primary=[14580627,-147,7]
}
Add(CounterEx,2143230,399,287)
{
Min=1
Max=1
Default=-1
Point(doMax)
Point(onThroughMax)
link(onNext,3111282:doRead,[])
link(onThroughMax,9425885:doClose,[(443,300)(443,335)(191,335)(191,307)])
}
Add(Math,3173145,301,294)
{
OpType=1
Op2=1
link(onResult,4062538:doEvent1,[])
link(Op1,14580627:Var,[])
}
Add(WinExec,8217348,686,287)
{
FileName="cmd.exe /C"
Mode=0
link(onExec,12645077:doWork1,[(739,293)(739,189)(384,189)])
link(Params,5476655:Value,[])
}
Add(Memory,5476655,693,245)
{
Default=String( )
}
Add(Timer,16452214,637,287)
{
Interval=1
Enable=1
AutoStop=1
link(onTimer,8217348:doExec,[])
}
Add(HubEx,12645077,380,287)
{
link(onEvent,2143230:doNext,[])
}
карма: 1

1
Голосовали:user_asm
Разработчик
Ответов: 26164
Рейтинг: 2127
#6: 2011-11-28 10:45:56 ЛС | профиль | цитата
1nd1g0, а зачем в твоей схеме Math, когда давно уже есть точка EndIdx
карма: 22

0
Ответов: 1376
Рейтинг: 197
#7: 2011-11-28 10:49:01 ЛС | профиль | цитата
1nd1g0, удалил второй таймер, на соображения сегодня нет лишних денег
code_25999.txt
карма: 1

1
файлы: 1code_25999.txt [1.4KB] [158]
Голосовали:user_asm
Разработчик
Ответов: 26164
Рейтинг: 2127
#8: 2011-11-28 11:01:42 ЛС | профиль | цитата
А вот так, мне больше нравится, как раз то, о чем я говорил -- порождение независимых экземпляров управления запуском. Так, альтернативный вариант, не претендую ни на что.


Add(MainForm,9425885,301,168)
{
link(onCreate,3818048:doEnum,[])
}
Add(StrList,5491812,343,105)
{
Strings=#16:notepad.exe;3000|16:mspaint.exe;6000|
}
Add(MultiElementEx,5160726,434,182)
{
Mode=1
link(onExec,14607305:doTimer,[(494,188)(494,279)(343,279)(343,237)])
}
BEGIN_SDK
Add(EditMultiEx,7816320,21,21)
{
WorkCount=#5:##add|8:##delete|
EventCount=#6:onExec|
VarCount=#12:##eventIndex|
Width=251
Height=102
VOffset=28
Point(##add)
Point(##delete)
Point(##eventIndex)
link(##add,7659026:doSplit,[(45,55)(45,69)])
}
Add(Timer,10070692,168,49)
{
Interval=1
Enable=1
AutoStop=1
Point(doInterval)
link(onTimer,8217348:doExec,[])
}
Add(Hub,5156882,126,63)
{
link(onEvent1,10070692:doInterval,[])
link(onEvent2,10070692:doTimer,[(154,76)(154,55)])
}
Add(WinExec,8217348,224,49)
{
link(onExec,7816320:onExec,[])
link(FileName,7659026:Part1,[(230,32)(114,32)(114,107)(76,107)])
}
Add(MultiStrPart,7659026,70,63)
{
Count=1
link(onSplit,5156882:doEvent1,[])
}
END_SDK
Add(ArrayEnum,3818048,357,182)
{
link(onItem,5160726:##add,[])
link(Array,5491812:Array,[])
}
Add(DoData,1191641,434,231)
{
link(onEventData,5160726:##delete,[(478,237)(478,165)(419,165)(419,195)])
link(Data,5160726:##eventIndex,[])
}
Add(Timer,14607305,357,231)
{
Interval=10
Enable=1
AutoStop=1
link(onTimer,1191641:doData,[])
}

карма: 22

0
Ответов: 3889
Рейтинг: 362
#9: 2011-11-28 11:18:06 ЛС | профиль | цитата
nesco, да, но совсем другой принцип остчёта, у тебя задержка от общего старта, у меня - между запусками. Тут уже вопрос, что ТС нужно было.
------------ Дoбавленo в 11.18:
foksov писал(а):
удалил второй таймер

Не просто удалили, а ещё принудительную самоостановку убрали, теперь да, работает. Но мне интересно, почему вообще не запускался таймер. Такое впечатление, что после остановки не успевает произойти реинициализация таймера, посему установка новой задержки и старт идут в никуда.
карма: 1

0
Разработчик
Ответов: 26164
Рейтинг: 2127
#10: 2011-11-28 11:28:27 ЛС | профиль | цитата
1nd1g0 писал(а):
у тебя задержка от общего старта, у меня - между запусками

Да без проблем. В принципе, на удаление экземпляров можно забить

code_26000.txt

[offtop]Гы, на форуме моя схема стала 26000-я[/offtop]
карма: 22

1
файлы: 1code_26000.txt [1.5KB] [124]
Голосовали:user_asm
Ответов: 3349
Рейтинг: 233
#11: 2011-11-28 15:36:52 ЛС | профиль | цитата
[flood]А такой нету [/flood]
карма: 1

0
Ответов: 3889
Рейтинг: 362
#12: 2011-11-28 15:58:04 ЛС | профиль | цитата
Ivann,[flood] не удивительно, судя по всему, нумерация с 10000 начинается. [/flood]
карма: 1

0
Разработчик
Ответов: 26164
Рейтинг: 2127
#13: 2011-11-28 16:20:01 ЛС | профиль | цитата
[flood]
1nd1g0 писал(а):
не удивительно, судя по всему, нумерация с 10000 начинается

А может ее тупо удалили [/flood]
карма: 22

0
Ответов: 3889
Рейтинг: 362
#14: 2011-11-28 16:49:51 ЛС | профиль | цитата
[flood]нашёл кучу аттачей с номерами ниже 10000, значит правда удалили[/flood]
карма: 1

0
Ответов: 952
Рейтинг: 4
#15: 2011-11-28 20:11:28 ЛС | профиль | цитата
nesco,
Можешь пояснить почему в Мультике нижние две точки пустые, но действия с ними таки выполняются.
карма: 0

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