Уменьшить скорость воспроизведения макроса

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
RoxMarty
Posts: 123
Joined: Sat 08 Dec, 2012 18:50
Has thanked: 51 times
Been thanked: 3 times

Уменьшить скорость воспроизведения макроса

Post by RoxMarty »

Latest post of the previous page:

Shmuel wrote: Thu 08 Aug, 2019 21:37 В Far3 делается чуть сложнее: Keys("CtrlC") mf.sleep(100) Keys("Esc")
Не совсем понял, это начало строки кода или как?
В моём варианте (дополнил в предыдущий пост) что надо подправить? Каждую команду в кавычки поставить и перед ней Keys прописать?

Для пробы пока просто решил переделать весь код по указанному шаблону (без задержки)



Так выдаёт ошибку при запуске FAR

Code: Select all

...Profile\Macros\internal\Editor_ShiftF7.lua:5: '}' expected (to close '{' at line 1) near 'CtrlTab'
Last edited by RoxMarty on Thu 08 Aug, 2019 21:53, edited 2 times in total.
Win 10 x64 / FAR 3 x64
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Уменьшить скорость воспроизведения макроса

Post by Shmuel »

Если вы хотите редактировать макросы для Фар3, то для начала перенесите этот файл из macros\internal в macros\scripts и замените его содержимое на:

Code: Select all

Macro {
  description="VHS 2 position";
  area="Editor"; key="ShiftF7";
  action=function()
    Keys("CtrlTab ShiftF6 CtrlC Esc Down CtrlTab CtrlV CtrlBS BS Space Add Space CtrlTab ShiftF6 CtrlC Esc CtrlTab CtrlV CtrlBS BS Home CtrlDel F7 Add Enter Home F7 Space Add Enter Right Right Right CtrlDel Home ShiftEnd CtrlC End Enter CtrlV Home F7 Space Add Enter CtrlDel CtrlDel ShiftEnd ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft CtrlX Home CtrlV Space Add Space Down Down Home")
  end;
}
Теперь отвечаю на ваш вопрос:

Code: Select all

Keys("последовательность клавиш")
mf.sleep(число)
Keys("последовательность клавиш")
Не знаю, понятно ли объяснил.
RoxMarty
Posts: 123
Joined: Sat 08 Dec, 2012 18:50
Has thanked: 51 times
Been thanked: 3 times

Уменьшить скорость воспроизведения макроса

Post by RoxMarty »

Shmuel wrote: Thu 08 Aug, 2019 21:58 Если вы хотите редактировать макросы для Фар3, то для начала перенесите этот файл из macros\internal в macros\scripts и замените его содержимое на:
Сделал так (хотя разницы в выполнении не заметил :) )
Shmuel wrote: Thu 08 Aug, 2019 21:58 Не знаю, понятно ли объяснил.
Можно показать живой пример, встроив этот "задерживающий" код куда-нибудь в мой код? Я на этом примере тогда пойму как оно работает. Или просто надо вписать внутрь моего кода дополнительный блок вида

Code: Select all

...Keys"(что-то)" код.задержки(миллисекунды) Keys"(что-то)"

Вставил так (фрагмент кода)

Code: Select all

Macro {
  description="VHS 2 position";
  area="Editor"; key="ShiftF7";
  action=function()
    Keys("CtrlTab ShiftF6 CtrlC Esc Down CtrlTab Keys("CtrlV") mf.sleep(10000) Keys("CtrlBS") BS Space...
  end;
}
При запуске FAR ошибка выдаётся

Code: Select all

...Profile\Macros\scripts\Editor_ShiftF7.lua:5: ')' expected near 'CtrlV'
Last edited by RoxMarty on Thu 08 Aug, 2019 22:10, edited 1 time in total.
Win 10 x64 / FAR 3 x64
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Уменьшить скорость воспроизведения макроса

Post by Shmuel »

RoxMarty wrote: Thu 08 Aug, 2019 22:06 разницы в выполнении не заметил
Этот перенос не для разницы в исполнении, а для удобства редактирования, чтобы не надо было перед двойными кавычками ставить бэкслэш.
RoxMarty wrote: Thu 08 Aug, 2019 22:06 Можно показать живой пример
Вы разбиваете свою последовательность, которая представляет сейчас 1 вызов Keys() на несколько частей, каждая из которых - отдельный вызов Keys(). Между этими вызовами Keys() вставляете вызов mf.sleep().
Живой пример уже приводил, давайте ещё раз:

Code: Select all

Keys("A B C CtrlC")
mf.sleep(85)
Keys("A B C CtrlC")
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Уменьшить скорость воспроизведения макроса

Post by HaRT »

RoxMarty, освойте уже какой-нибудь мини-курс наподобие «Основы програмирования на Луа для не-программистов».
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Уменьшить скорость воспроизведения макроса

Post by Shmuel »

Вот пример прямо на вашем макросе, который я разрезал на 3 куска (разрезал в произвольных двух точках, а вы разрежете на другое число кусков, и не в произвольных точках, а там, где по-вашему нужно вставлять задержки):

Code: Select all

Macro {
  description="VHS 2 position";
  area="Editor"; key="ShiftF7";
  action=function()
    Keys("CtrlTab ShiftF6 CtrlC Esc Down CtrlTab CtrlV CtrlBS BS Space Add Space CtrlTab ShiftF6 CtrlC")
    mf.sleep(100)
    Keys("Esc CtrlTab CtrlV CtrlBS BS Home CtrlDel F7 Add Enter Home F7 Space Add Enter Right Right Right")
    mf.sleep(100)
    Keys("CtrlDel Home ShiftEnd CtrlC End Enter CtrlV Home F7 Space Add Enter CtrlDel CtrlDel ShiftEnd ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft ShiftLeft CtrlX Home CtrlV Space Add Space Down Down Home")
  end;
}
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Уменьшить скорость воспроизведения макроса

Post by zg »

а только у меня Keys("Add") в редакторе вставляет нулевой символ? а так заменив в приведённом макросе Add на + — у меня всё работает ожидаемо.
RoxMarty
Posts: 123
Joined: Sat 08 Dec, 2012 18:50
Has thanked: 51 times
Been thanked: 3 times

Уменьшить скорость воспроизведения макроса

Post by RoxMarty »

Shmuel wrote: Thu 08 Aug, 2019 22:30 Вот пример прямо на вашем макросе
Благодарю! Теперь сразу стало понятно! Буду пробовать
HaRT wrote: Thu 08 Aug, 2019 22:21 освойте уже какой-нибудь мини-курс наподобие «Основы програмирования на Луа для не-программистов».
Ради того, чтоб просто узнать команду задержки в макросе, который записывается автоматически через ? #рукалицо (простите :) )
Win 10 x64 / FAR 3 x64
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Уменьшить скорость воспроизведения макроса

Post by zg »

с учётом этого стоит попробовать перед Keys вставить mf.clip(5,2) — если поможет, проблема в улучшаторах клипборда. если нет, нужно больше информации, имена файлов, что ожидаете получить, что получили и т.д. всё как написано здесь. потому как у меня всё работает.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Уменьшить скорость воспроизведения макроса

Post by HaRT »

RoxMarty wrote: Thu 08 Aug, 2019 23:10 Ради того, чтоб просто узнать команду
Нет, ради того, чтобы не донимать неуместными вопросами уважаемых (и иногда слишком добродушных) читателей форума.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Уменьшить скорость воспроизведения макроса

Post by HaRT »

zg wrote: Thu 08 Aug, 2019 22:49 а только у меня Keys("Add") в редакторе вставляет нулевой символ? а так заменив в приведённом макросе Add на + — у меня всё работает ожидаемо.
Ответные сообщения @Shmuelя перенесены.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Уменьшить скорость воспроизведения макроса

Post by DrKnS »

Shmuel wrote: Thu 08 Aug, 2019 21:12 этот тест нередко завершается неудачей, если наряду с Фаром запущена некоторая аппликация с окном Rich Text
У меня, если я правильно помню, он завершался неудачей каждый раз, если до запуска теста в буфере лежало что-то нетекстовое.
RoxMarty
Posts: 123
Joined: Sat 08 Dec, 2012 18:50
Has thanked: 51 times
Been thanked: 3 times

Уменьшить скорость воспроизведения макроса

Post by RoxMarty »

Shmuel, Спасибо ещё раз! Код задержки работает и вроде пока проблем не возникало (разок из десяти правда всё же, но это лучше, чем было!). Налепил везде куда только можно, где это связано с копипастой или вызовом меню поиска в редакторе



Интересно только, я думал, что задержка покажется визуально в каждый конкретный свой запуск (чтоб отловить точно где её необходимо выставить, а где она не нужна), но на деле отображается только конечный результат. На досуге попробую быть может поэкспериментировать
zg wrote: Thu 08 Aug, 2019 23:12 с учётом этого стоит попробовать перед Keys вставить mf.clip(5,2)
Попробовал подставить это значение в свой изначальный код (то есть без задержек вовсе) и... в 50 случаях из 50 всё идеально прошло!

Можно даже не отжимать хоткей теперь :)

Благодарю и за это!

P.S. В FAR 2 прописал (по аналогии с ранним примером к FAR 2) "clip(5,2)" перед первой командой секвенции и... теперь и тут всё решилось! Наверно сто строк отработало и ни сучка, ни задоринки
Last edited by RoxMarty on Thu 08 Aug, 2019 23:58, edited 1 time in total.
Win 10 x64 / FAR 3 x64
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Уменьшить скорость воспроизведения макроса

Post by Shmuel »

DrKnS wrote: Thu 08 Aug, 2019 23:42 У меня, если я правильно помню, он завершался неудачей каждый раз, если до запуска теста в буфере лежало что-то нетекстовое.
Сейчас ещё раз поигрался - там закономерность несколько сложнее (или просто иная).
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Уменьшить скорость воспроизведения макроса

Post by Shmuel »

RoxMarty wrote: Thu 08 Aug, 2019 23:47 я думал, что задержка покажется визуально в каждый конкретный свой запуск (чтоб отловить точно где её необходимо выставить, а где она не нужна), но на деле отображается только конечный результат.
Для визуализации вставьте флаг flags="EnableOutput";

Code: Select all

Macro {
  description="VHS 2 position";
  area="Editor"; key="ShiftF7";
  flags="EnableOutput";
  action=function()
    ......
  end;
}
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

Уменьшить скорость воспроизведения макроса

Post by Wave »

DrKnS wrote: Thu 08 Aug, 2019 16:37
RoxMarty wrote: Thu 08 Aug, 2019 14:48тормознутости в сравнении со вторым
А можно примеры в студию?
Стартует очень заметно медленней. Несколько секунд против мгновенно. Не уверен, но вроде бы заходит в папки на многие тысячи файлов медленней. Хотя слишком разные условия для сравнения: другие группы раскраски файлов, всё другое.
А, ещё FAR3 памяти больше потребляет, хотя тоже то ещё сравнение: FAR3x64 против FAR2x86 и разный набор плагинов.
Ну и выход из FAR2 тоже заметно быстрее случается, чем из FAR3.
Last edited by Wave on Fri 09 Aug, 2019 22:35, edited 2 times in total.
Пользуюсь ФАРом больше 20 лет © собирательный.
Post Reply

Return to “Нужна помощь”