Страница 5 из 7
Добавлено: Сб авг 27, 2011 20:56
MVV
Не, не вижу, оно появилось уже после того, как я зашел в эту тему.
Геморройный подход. Представь сколько таких команд нужно понаписать в ini для схожих задач, ужас...
Геморрой - это встраивание в TCFS2 функции убийства запущенных ранее задач. Как ты определишь, какие из них хорошие, а какие - плохие? И вообще, не хочу я убивать никакие процессы.
Проблема подобного плана может возникнуть только для команд, которые чего-то долго ждут, а потом что-то ещё делают. И возникла она
в первый раз. ИМХО, куда проще для каждой такой команды, которая ведёт себя похожим образом (а их вряд ли будет много) завести отдельный INI-ключик в секции TCFS2, в котором сохранять номер сеанса.
Flasher писал(а):Сейчас проверил с ожиданием - действительно срабатывает только с повторного, хотя такого не должно быть. Это косяк программы. Нужно у MVV спросить.
Напишите мне в личку подробно, какая команда работает не так, как ожидается, я путаюсь в вашей беседе.
Добавлено: Сб авг 27, 2011 21:07
Flasher
MVV писал(а):Не, не вижу, оно появилось уже после того, как я зашел в эту тему.
Давно же ты зашёл (и не вышел), однако.
MVV писал(а):Как ты определишь, какие из них хорошие, а какие - плохие?
Это не требуется. Логика проста: все - плохие.
MVV писал(а):Проблема подобного плана может возникнуть только для команд, которые чего-то долго ждут, а потом что-то ещё делают. И возникла она в первый раз.
Всё периодически появляется первый раз, в частности недавний разговор по /p (pause).
MVV писал(а):ИМХО, куда проще для каждой такой команды, которая ведёт себя похожим образом (а их вряд ли будет много) завести отдельный INI-ключик в секции TCFS2, в котором сохранять номер сеанса.
Приведи пример с тремя подобными командами с этим ini ключиком, я пока себе не очень представляю, как это уменьшит объём написанного.
MVV писал(а):Напишите мне в личку подробно, какая команда работает не так, как ожидается, я путаюсь в вашей беседе.
Я же написал какая (
"См. выше, добавил !=1 красным.").
Добавлено: Сб авг 27, 2011 21:25
MVV
Flasher писал(а):Давно же ты зашёл (и не вышел), однако.

Я около часа писал ответ) как видишь, в нём есть цитаты частей постов, которые вы за это время уже успели поудалять или поисправлять.
Flasher писал(а):MVV писал(а):Как ты определишь, какие из них хорошие, а какие - плохие?
Это не требуется. Логика проста: все - плохие.
Хреновая логика. Будут висеть на ожидании двух независимых событий два процесса, а ты оба прибьёшь.
Flasher писал(а):Приведи пример с тремя подобными командами с этим ini ключиком, я пока себе не очень представляю, как это уменьшит объём написанного.
Код: Выделить всё
cmd1=set_tcini(TCFS2, cmd1s, #S) команда1 команда2 ... delay(10000) if(tcini(TCFS2, cmd1s, # == #S), командаN+командаM+..., ничего)
cmd2=set_tcini(TCFS2, cmd2s, #S) команда1 команда2 ... delay(10000) if(tcini(TCFS2, cmd2s, # == #S), командаN+командаM+..., ничего)
Аналогично для остальных команд, которые чего-то ждут. Ранее мы уже писали "критическую секцию" для команд, чтобы не допустить выполнения нескольких копий команды одновременно, проверка сеанса выполняется аналогичным образом, разве что не блокирует вход в команду для новых копий, а наоборот, указывает уже запущенным, что их прервали. Символом
#S обозначен номер сеанса (пока не знаю, как лучше назвать, но точно с решётки) - это будет внутренний макрос TCFS2.
Flasher писал(а):MVV писал(а):Напишите мне в личку подробно, какая команда работает не так, как ожидается, я путаюсь в вашей беседе.
Я же написал какая (
"См. выше, добавил !=1 красным.").
Ну попросил же нормальным языком написать, что и как не работает, и как должно работать. Это так сложно? Любишь ты стрелки кидать вместо того чтобы дать ответ на чётко поставленный вопрос. Очевидное для тебя может быть абсолютно неочевидным для других.
Добавлено: Сб авг 27, 2011 21:46
Flasher
MVV писал(а):Хреновая логика. Будут висеть на ожидании двух независимых событий два процесса, а ты оба прибьёшь.
Нормальная логика. Прибью два
мешающих процесса. Вызывая команду я прекрасно осознаю, для чего это делается. Вариантов совпадения времени вызова разнородных команд, где используется delay, практически быть не должно.
MVV писал(а):Аналогично для остальных команд, которые чего-то ждут.
Ты привёл муляж, а для понимания требуются конкретные примеры, аналогично
этому. Там у тебя явно не одна строчка.
MVV писал(а):Ну попросил же нормальным языком написать, что и как не работает, и как должно работать. Это так сложно? Любишь ты стрелки кидать вместо того чтобы дать ответ на чётко поставленный вопрос.
Какие стрелки? Каким языком? Окстись. Я дал ссылку с ответом на чётко поставленный вопрос
MVV писал(а):какая команда работает не так, как ожидается
MVV писал(а):Очевидное для тебя может быть абсолютно неочевидным для других.
В данном случае это к тебе больше относится. Я в поставленной конкретно вопросе дополнительные не увижу при всём желании.
А теперь в подробностях (то, что сперва умолчалось в запросе):
Команда должна сменять панели при первом нажатии кнопки, т.к. происходит проверка значения ключа. В одном случае ключ при несовпадении принимает значение 1, и выполняется юзеркоманда вызова дефолтного бара, в другом - ноль, и выполняется юзеркоманда вызова второго бара. Но почему-то команда срабатывает верно только со второго раза.
Добавлено: Вс авг 28, 2011 02:01
MVV
Flasher писал(а):MVV писал(а):Хреновая логика. Будут висеть на ожидании двух независимых событий два процесса, а ты оба прибьёшь.
Нормальная логика. Прибью два
мешающих процесса. Вызывая команду я прекрасно осознаю, для чего это делается. Вариантов совпадения времени вызова разнородных команд, где используется delay, практически быть не должно.
Повторюсь, хреновая логика. Невозможно знать наперёд, какие процессы будут запущены в тот момент, и никак нельзя слепо убивать всё, что попадёт под руку. Если ты считаешь, что тебе достаточно одной команды с
delay, то тебе тем более не составит труда один раз написать строчку с запоминанием номера сеанса.
Flasher писал(а):MVV писал(а):Аналогично для остальных команд, которые чего-то ждут.
Ты привёл муляж, а для понимания требуются конкретные примеры, аналогично
этому. Там у тебя явно не одна строчка.
Там было через
GetTickCount, который, как написано в дополнении, не работает. Вариант через номер сеанса куда проще (
@S - псевдо-макрос, возвращающий этот самый номер, пока не знаю, как лучше его назвать):
Код: Выделить всё
cmd1=set_tcini(TCFS2, Cmd1, 0) run_item(set_bar, 1), test(tcini(TCFS2, Bar, # != 1)) | set_tcini(TCFS2, Cmd1, @1) run_item(set_bar, 2) delay(15000) if(tcini(TCFS2, Cmd1, # == @S), run_item(set_bar, 1))
Flasher писал(а):Какие стрелки? Каким языком? Окстись. Я дал ссылку с ответом на чётко поставленный вопрос
MVV писал(а):какая команда работает не так, как ожидается
Мог бы и подробнее написать, как именно
не так она работает))
Flasher писал(а):MVV писал(а):Очевидное для тебя может быть абсолютно неочевидным для других.
В данном случае это к тебе больше относится. Я в поставленной конкретно вопросе дополнительные не увижу при всём желании.
Если меня просят прояснить что-то, я обычно проясняю, а не начинаю возмущаться, что я это писал по сто раз на двадцати предыдущих страницах, и что ответ можно собрать из тех двух десятков постов.
Flasher писал(а):Команда должна сменять панели при первом нажатии кнопки, т.к. происходит проверка значения ключа. В одном случае ключ при несовпадении принимает значение 1, и выполняется юзеркоманда вызова дефолтного бара, в другом - ноль, и выполняется юзеркоманда вызова второго бара. Но почему-то команда срабатывает верно только со второго раза.
Это уже по существу. Можешь же, когда захочешь.

Обсуждение того, что конкретно и почему не работает в команде, я продолжу
там.
Добавлено: Вс авг 28, 2011 20:48
Flasher
MVV писал(а):Невозможно знать наперёд, какие процессы будут запущены в тот момент, и никак нельзя слепо убивать всё, что попадёт под руку.
Почему это нельзя знать наперёд? С чего ты взял? А убивать не всё, что попадёт под руку, а все отличные от запускаемой копии TCFS2, которые мне нафиг не сдались, п.ч. я использую уже другую фичу, которой эти процессы, (а в 99% - один процесс) будет только создавать помехи.
MVV писал(а):Там было через GetTickCount, который, как написано в дополнении, не работает. Вариант через номер сеанса куда проще (@S - псевдо-макрос, возвращающий этот самый номер
Ну, это уже поприличней смотрится.
MVV писал(а):Мог бы и подробнее написать, как именно не так она работает))
Мог бы, если бы попросили, что конкретно требуется описать. Телепатией не владею.
MVV писал(а):Если меня просят прояснить что-то, я обычно проясняю, а не начинаю возмущаться, что я это писал по сто раз на двадцати предыдущих страницах, и что ответ можно собрать из тех двух десятков постов.
Не передёргивай. Возмущаться ты начал и ничего кроме команды не запросил, т.ч. неча пинять на зеркало.
MVV писал(а):Это уже по существу. Можешь же, когда захочешь
Я всегда могу и отвечаю, когда конкретизируют, а не раздувают сопли.
Добавлено: Вс авг 28, 2011 22:05
Avada
Flasher
MVV
А общаться без подобных обменов "личными любезностями" — никак? Обязательно нужно, чтобы модератор вмешался? Сто раз говорилось, что подобные вещи, если уж в них есть позарезная необходимость — в ЛС. Публичную перепалку прекращаем.
Добавлено: Ср авг 31, 2011 18:50
ask-rus
Задача более чем
решена (
MVV, с благодарностью).
Добавлено: Вс сен 04, 2011 14:26
MC Hummer
Решил не создавать новою тему, т.к. мой вопрос так же относится к панели инструментов.
Есть ли в ТС команда, переключающая режим сортировки каталогов с Всегда по имени на Как файлов (также и по времени), и возможность вынесения её на панель инструментов в виде кнопки?
Добавлено: Вс сен 04, 2011 14:36
Avada
MC Hummer
Очень интересная аргументация. Предлагается все функции, для которых теоретически можно создать кнопку, считать относящимися к панели инструментов и загонять в тему про их автоматическую смену?
Короче,
замечание за
оффтоп.
А встроенная команда, как тут потом
sa правильно подсказал, это
cm_SwitchDirSort. (Его пост я удалил, а свою первоначальную ошибку исправил прямо здесь, чтобы число оффтопных постов не умножать.)
Добавлено: Вс янв 22, 2012 15:38
ask-rus
Вновь возращаюсь к былому - смена одной панели инструментов на другую с автоматическим возвратом (15 сек). Как быть, если требуется "закрепить" вторую панель (кнопка), т.е. не дать ей смениться на первую через ~15 сек. Убивать процесс TCFS2.exe мы ведь так и не научились?
[em_1]
button=wcmicons.dll
cmd=OPENBAR %COMMANDER_PATH%\BAR\MAIN.BAR
[em_2]
button=wcmicons.dll
cmd=OPENBAR %COMMANDER_PATH%\BAR\EXT.BAR
[em_123]
button=%COMMANDER_PATH%\PLUGINS\Tools\TCFS2\TCFS2.exe
cmd=%COMMANDER_PATH%\PLUGINS\Tools\TCFS2\TCFS2.exe
param=/ei quick_bar
path=%COMMANDER_PATH%\PLUGINS\Tools\TCFS2\TCFS2.exe
quick_bar=set_tcini(TCFS2, #0, 0) run_item(set_bar, 1), test(tcini(TCFS2, Bar, #)==2) | set_tcini(TCFS2, #0, @sid) run_item(set_bar, 2) delay(15000) if(tcini(TCFS2, #0, # == @sid), run_item(set_bar, 1))
set_bar=if(#1 == 1, tem(em_1)) if(#1 == 2, tem(em_2)) if(#1 > 0, set_tcini(Layout, ButtonBar, 1), run_item(tb0)) set_tcini(TCFS2, Bar, #1), , set_bar(1)
Добавлено: Вс янв 22, 2012 15:42
Flasher
ask-rus
Так убивать процесс не обязательно через саму TCFS2. Создай kill-команду, повесь на клавиши и вызывай, когда требуется.
Добавлено: Вс янв 22, 2012 16:01
ask-rus
Flasher
taskkill? Но как бы правильнее? По PID?
Добавлено: Вс янв 22, 2012 16:05
Flasher
ask-rus
Где ж ты PID возмешь-то?
taskkill /F /IM TCFS2.exe /T либо tskill TCFS2.exe
Добавлено: Чт янв 26, 2012 10:10
MVV
А смысл убивать? Просто выполняем команду, которая где-то прописывает флаг, который будет говорить первой копии, что возвращать панель не нужно. Или же тупо пишем 0 в ключ quick_bar секции TCFS2 - тогда работающая копия после ожидания увидит, что после неё уже похозяйничали, и ничего не сделает. Я думал, этот вопрос решен давным давно...