Нюансы Vbs скриптинга в AkelPad`e

Russian main discussion
  • Author
  • Message
Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Нюансы Vbs скриптинга в AkelPad`e

Post by Andrey_A_A »

Создал тему, т.к. пишу скрипты для AkelPad`а в Vbs и обнаружилось ряд различий между обычными методами Vbs и использования их в редакторе, я думаю, что их необходимо внести в справку плагина Script для Vbs.
Опытным путём выяснилось
1. Для определения к-ва переданных параметров в Vbs используется
WScript.Arguments.Count
но в AkelPad`e эта функция выдаёт ошибку, долго мучился, но нашёл
WScript.Arguments.Length
2. Передача параметров скрипту вызываемого из скрипта
Call("Scripts::Main", 1, "InsertDate.js", `"dd MMMM yyyy"`) в Js
но в Vbs это не срабатывает, т.к. апостроф и пробел выдают ошибку
вот, что получилось после бессонной ночи

Code: Select all

' запуск скрипта Multi_SR.js с его восьмью параметрами
k = AkelPad.Call("Scripts::Main", 2, "Multi_SR.js", Eval(chr(34) & Find        & chr(34)) & chr(32) &_
                                                                                            Eval(chr(34) & Repl        & chr(34)) & chr(32) &_
                                                                                            Eval(chr(34) & Reg         & chr(34)) & chr(32) &_
                                                                                            Eval(chr(34) & MLine     & chr(34)) & chr(32) &_
                                                                                            Eval(chr(34) & Esc         & chr(34)) & chr(32) &_
                                                                                            Eval(chr(34) & ReplFun & chr(34)) & chr(32) &_
                                                                                            Eval(chr(34) & Direct     & chr(34)) & chr(32) &_
                                                                                            Eval(chr(34) & Button    & chr(34)))
Но и в этом есть то, что не смог побороть - это передача параметра с пустой строкой, к примеру если Repl = "", то скрипту передастся не 8 параметров, а 7, т.е. происходит сдвиг параметров

3. C командой Split в Vbs скриптах никогда не было проблем, но вот в AkelPad появились различии, для "разрезания" по строкам

Code: Select all

tTxt  = AkelPad.GetSelText()
Txt = Split(tTxt, chr(13)) 'выделенный текст разрезается по chr(13)
Cl = AkelPad.GetClipboardText()
IClip = Split(Cl, vbNewLine) ' а текст из буфера по vbNewLine !!!
Если кто-то встречался с подобными нюансами для VBS напишите - это сэкономит время всем.
Я понимаю, что эта тема больше подходит для уже существующей "Scripts discussion" , но там обсуждается js, и эта информация затеряется... Если модераторы решат перенести это туда я не сильно буду против

Добавлено:
А вот аномалия:
Это срабатывает

Code: Select all

pp = AkelPad.Call("Explorer::Main", 1, "C:\12345.txt")
а это нет!!!

Code: Select all

File = "C:\12345.txt"
pp = AkelPad.Call("Explorer::Main", 1, File)
и это тоже

Code: Select all

File = chr(34) & "C:\12345.txt" & chr(34)
pp = AkelPad.Call("Explorer::Main", 1, File)

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

1. viewtopic.php?p=10931#p10931

2.

Code: Select all

Call("Scripts::Main", 1, "InsertDate.js", "'dd MMMM yyyy'")
или

Code: Select all

Call("Scripts::Main", 1, "InsertDate.js", "`dd MMMM yyyy`")
3. AkelPad.GetSelText(3) '\r\n

Добавлено:
Аномалия пока разбирается.

Добавлено:
Аномалия исправлена:
viewtopic.php?p=10938#p10938

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Огромное спасибо!!! Опять же отмечаю молниеносную скорость исправления\добавления!

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Re: Нюансы Vbs скриптинга в AkelPad`e

Post by VladSh »

Andrey_A_A wrote:Я понимаю, что эта тема больше подходит для уже существующей "Scripts discussion" , но там обсуждается js
Там весь скриптинг обсуждается, просто по vbs никто вопросов не задаёт (наверно не пишут).
Я за то, чтобы перенести в тему дискуссий по скриптам.

Instructor, конечно, молодец с такой скоростью исправлять, и хорошо, чтобы Scripts-плаг поддерживал разные скрипты, но скриптописателям я бы не советовал затачиваться на vbs, IMHO - это путь в никуда. js - хорошо, привыкаешь к единому синтаксису (Java, .NET и т.д.), да и проще кусками кода обмениваться. т.к. под js уже кучу всего понаписали.

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

я бы не советовал затачиваться на vbs ... т.к. под js уже кучу всего понаписали.
Я о AkelPad`e узнал из сборки Total Commander`a. На форуме TC всё обстоит наоборот - там не встретишь скриптов на js! В основном bat, cmd, vbs, au3, ahk
Когда я решил настроить наконец-таки AkelPad среди скриптов js я не встретил много того, чем я пользовался в Totale (для обработки текстовых файлов не открывая их). Я просто скрипты vbs, которые уже написаны стал адаптировать для AkelPad и стали появляться разные нюансы.
да и проще кусками кода обмениваться.
недавно я спрашивал у скринописателей о всяческих наработках, о поделиться опытом... в ответ тишина...
vbs - это путь в никуда
Скрипт он и в африке скрипт, главной целью которого результат, и не важно на чём он написан. Мне не составляет труда переключаться на разные языки bat, cmd, vbs, au3, ahk и так же js, html... но из всех мне больше всего нравится именнo vbs. А кому-то нравится js. На вкус и цвет... главное результат!

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

недавно я спрашивал у скринописателей о всяческих наработках, о поделиться опытом... в ответ тишина...
Все наработки, которые скриптописатели желали опубликовать опубликованы в Коллекции скриптов.
vbs
Можно ссылку, в каком это контексте он используется в Тотале? Я лично знаю, что очень много можно сделать голым batch в Тотале(это если встроеных функций не хватает). А об "au3, ahk" наверное первый раз слышу.

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

У меня в Totale в меню я вставил около 300 скриптов (половина взята на форуме, что-то подправлено под себя, но все они написаны на VBS) http://forum.wincmd.ru/
все ссылки я дать не смогу, времени нет, набери на форуме в поиске слово "скрипт " около 500 тем связанных тем или иным образом с vbs
Контекст совершенно разный, к примеру
http://forum.wincmd.ru/viewtopic.php?t=13513
http://forum.wincmd.ru/viewtopic.php?t= ... highlight=
http://forum.wincmd.ru/viewtopic.php?t= ... &&start=60
http://forum.wincmd.ru/viewtopic.php?t=977
вот au3
http://forum.wincmd.ru/viewtopic.php?t= ... &highlight
http://forum.wincmd.ru/viewtopic.php?t= ... 0%E8%EF%F2
и так далее...
если надо я скину подборку скриптов для Totala, я не жадный...
Я лично знаю, что очень много можно сделать голым batch в Тотале
В Tотале можно сделать почти всё что угодно, как и в AkelPad`e

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

В Tотале можно сделать почти всё что угодно, как и в AkelPad`e
Для всего, что угодно у меня есть С/C++ с полными API доступом без каких-либо ограничений(к обоим софтинам). А использовать костыль AutoIt3, либо глобально регистрировать DynamicWrapperX для того что-бы какая-нибудь вирусня влезла - это не для нормальных людей.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Andrey_A_A
Я не видел конкретных вопросов, если бы они были, то люди бы ответили точно.

По вопросам, что выше:
- "Запуск выделенных файлов ассоциированной программой" -> встроенная возможность AkelPad'а Ctlr+F5
- "Расчет контрольной суммы CRC" -> скрипт InfocatchergetHash.js
- "Можно ли повесить сдвиг панелей (20/80 и 80/20) на кнопку(и)" - не понял о чём речь...
- "Создать список WEB-ссылок / запустить их в браузере" -> по первой части скрипт InfocatchergetLinks.js, по второму есть решение в URLOpen.js.

Многое уже написано, просто надо почитать темы Scripts collection и Scripts discussion, но обычно этим никто заниматься не хочет.

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

- "Можно ли повесить сдвиг панелей (20/80 и 80/20) на кнопку(и)" - не понял о чём речь...
А я понял. Если и можно, то надо изучать исходный код AkelPad'а (и посылать нужные сообщения окну редактирования).
Имеется в виду резделитель окна.

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

VladSh Ссылки давались для FeyFre для ознакомления и это были не вопросы, а просто ссылки...
Многое уже написано, просто надо почитать темы

Я того же мнения, всё это прочитано и освоено, и вставлено в меню, которое 2800 строк, из того что написано... но есть то, что мне не хватает, позже, выложу что получится... Все спасибо за участие

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Andrey_A_A
Вы пишете:
Andrey_A_A wrote:Когда я решил настроить наконец-таки AkelPad среди скриптов js я не встретил много того, чем я пользовался в Totale
а потом
FeyFre wrote:
недавно я спрашивал у скринописателей о всяческих наработках, о поделиться опытом... в ответ тишина...
Все наработки, которые скриптописатели желали опубликовать опубликованы в Коллекции скриптов.
Потом Вы даёте ссылки...

Я отвечаю, потому что:
- во-1, на самом деле когда есть вопросы, то "в ответ НЕ тишина"
Andrey_A_A wrote:Ссылки давались для FeyFre
я не увидел, что для FeyFre - в сообщении не сказано, что только для него, так что всё нормально
- а во-2, по этим ссылкам, в том смысле, что скрипты на vbs для перечисленных вопросов не нужны, они уже есть.

Если будут скрипты для AkelPad'а, которые не повторяют функционал уже имеющихся, то конечно поделИтесь! В теме Scripts collection.

Infocatcher wrote:Имеется в виду резделитель окна.
По моему, где-то Instructor выкладывал что-то подобное...

Добавлено:
По последнему вопросу: если разделить окно текущего файла и нажать правой клавишей мыши на разделителе, то выскочит менюшка, с помощью которой можно регулировать размеры, т.е. это не скрипт, а встроенная возможность редактора.

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Спасибо VladSh , ты настоящий друг

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Столкнулся в очередной раз с проблемой запуска скрипта с параметрами
этот вариант работает

Code: Select all

Call("Scripts::Main", 1, "InsertDate.js", "`dd MMMM yyyy`")
но когда в параметрах кавычки, то вообще не возможно вызвать т.к. выдаёт ошибку , к примеру:

Code: Select all

Call("Scripts::Main", 1, "getHash.js", "`-type="MD5" -autoCalc=true -dialog=false`")
и как быть?

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Andrey_A_A wrote:и как быть?
Там же пример вызова есть.

Code: Select all

Call("Scripts::Main", 1, "getHash.js", `-type="MD5" -autoCalc=true -dialog=false`)
или

Code: Select all

Call("Scripts::Main", 1, "getHash.js", "-type='MD5' -autoCalc=true -dialog=false")
Кстати, autoCalc влияет только на диалог.

Смысл в том, что «dd MMMM yyyy» должно быть одним аргументом, поэтому должно передаваться в дополнительных кавычках (из-за пробелов), а каждый из параметров в -paramName=paramValue должен быть отдельным аргументом.

P.S. Заодно убрал избыточные кавычки в примерах для converter.js. :)
Post Reply