AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Нюансы Vbs скриптинга в AkelPad`e
Goto page 1, 2  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian)
View previous topic :: View next topic  
Author Message
Andrey_A_A



Joined: 03 Jun 2010
Posts: 556
Location: Сочи, Хоста

PostPosted: Sat Jan 15, 2011 9:23 am    Post subject: Нюансы Vbs скриптинга в AkelPad`e Reply with quote

Создал тему, т.к. пишу скрипты для 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:
' запуск скрипта 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:
tTxt  = AkelPad.GetSelText()
Txt = Split(tTxt, chr(13)) 'выделенный текст разрезается по chr(13)
Cl = AkelPad.GetClipboardText()
IClip = Split(Cl, vbNewLine) ' а текст из буфера по vbNewLine !!!


Если кто-то встречался с подобными нюансами для VBS напишите - это сэкономит время всем.
Я понимаю, что эта тема больше подходит для уже существующей "Scripts discussion" , но там обсуждается js, и эта информация затеряется... Если модераторы решат перенести это туда я не сильно буду против

Добавлено:
А вот аномалия:
Это срабатывает
Code:
pp = AkelPad.Call("Explorer::Main", 1, "C:\12345.txt")

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

и это тоже
Code:
File = chr(34) & "C:\12345.txt" & chr(34)
pp = AkelPad.Call("Explorer::Main", 1, File)
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 5372

PostPosted: Sat Jan 15, 2011 10:42 am    Post subject: Reply with quote

1. http://akelpad.sourceforge.net/forum/viewtopic.php?p=10931#10931

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


3. AkelPad.GetSelText(3) '\r\n

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

Добавлено:
Аномалия исправлена:
http://akelpad.sourceforge.net/forum/viewtopic.php?p=10938#10938
Back to top
View user's profile Send private message Send e-mail
Andrey_A_A



Joined: 03 Jun 2010
Posts: 556
Location: Сочи, Хоста

PostPosted: Sat Jan 15, 2011 11:57 am    Post subject: Reply with quote

Огромное спасибо!!! Опять же отмечаю молниеносную скорость исправления\добавления!
Back to top
View user's profile Send private message Send e-mail Visit poster's website
VladSh



Joined: 29 Nov 2006
Posts: 2610
Location: Киев, Русь

PostPosted: Sat Jan 15, 2011 1:34 pm    Post subject: Re: Нюансы Vbs скриптинга в AkelPad`e Reply with quote

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

Instructor, конечно, молодец с такой скоростью исправлять, и хорошо, чтобы Scripts-плаг поддерживал разные скрипты, но скриптописателям я бы не советовал затачиваться на vbs, IMHO - это путь в никуда. js - хорошо, привыкаешь к единому синтаксису (Java, .NET и т.д.), да и проще кусками кода обмениваться. т.к. под js уже кучу всего понаписали.
Back to top
View user's profile Send private message Visit poster's website
Andrey_A_A



Joined: 03 Jun 2010
Posts: 556
Location: Сочи, Хоста

PostPosted: Sat Jan 15, 2011 2:35 pm    Post subject: Reply with quote

Quote:
я бы не советовал затачиваться на vbs ... т.к. под js уже кучу всего понаписали.

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

недавно я спрашивал у скринописателей о всяческих наработках, о поделиться опытом... в ответ тишина...
Quote:
vbs - это путь в никуда

Скрипт он и в африке скрипт, главной целью которого результат, и не важно на чём он написан. Мне не составляет труда переключаться на разные языки bat, cmd, vbs, au3, ahk и так же js, html... но из всех мне больше всего нравится именнo vbs. А кому-то нравится js. На вкус и цвет... главное результат!
Back to top
View user's profile Send private message Send e-mail Visit poster's website
FeyFre



Joined: 07 Aug 2007
Posts: 2042
Location: Vinnitsa, Ukraine

PostPosted: Sat Jan 15, 2011 3:03 pm    Post subject: Reply with quote

Quote:
недавно я спрашивал у скринописателей о всяческих наработках, о поделиться опытом... в ответ тишина...
Все наработки, которые скриптописатели желали опубликовать опубликованы в Коллекции скриптов.
Quote:
vbs
Можно ссылку, в каком это контексте он используется в Тотале? Я лично знаю, что очень много можно сделать голым batch в Тотале(это если встроеных функций не хватает). А об "au3, ahk" наверное первый раз слышу.
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Andrey_A_A



Joined: 03 Jun 2010
Posts: 556
Location: Сочи, Хоста

PostPosted: Sat Jan 15, 2011 3:38 pm    Post subject: Reply with quote

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

В Tотале можно сделать почти всё что угодно, как и в AkelPad`e
Back to top
View user's profile Send private message Send e-mail Visit poster's website
FeyFre



Joined: 07 Aug 2007
Posts: 2042
Location: Vinnitsa, Ukraine

PostPosted: Sat Jan 15, 2011 4:05 pm    Post subject: Reply with quote

Quote:
В Tотале можно сделать почти всё что угодно, как и в AkelPad`e
Для всего, что угодно у меня есть С/C++ с полными API доступом без каких-либо ограничений(к обоим софтинам). А использовать костыль AutoIt3, либо глобально регистрировать DynamicWrapperX для того что-бы какая-нибудь вирусня влезла - это не для нормальных людей.
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
VladSh



Joined: 29 Nov 2006
Posts: 2610
Location: Киев, Русь

PostPosted: Sat Jan 15, 2011 4:21 pm    Post subject: Reply with quote

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

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

Многое уже написано, просто надо почитать темы Scripts collection и Scripts discussion, но обычно этим никто заниматься не хочет.
Back to top
View user's profile Send private message Visit poster's website
Infocatcher



Joined: 06 Aug 2007
Posts: 1619

PostPosted: Sat Jan 15, 2011 4:45 pm    Post subject: Reply with quote

Quote:
- "Можно ли повесить сдвиг панелей (20/80 и 80/20) на кнопку(и)" - не понял о чём речь...
А я понял. Если и можно, то надо изучать исходный код AkelPad'а (и посылать нужные сообщения окну редактирования).
Имеется в виду резделитель окна.
Back to top
View user's profile Send private message Visit poster's website
Andrey_A_A



Joined: 03 Jun 2010
Posts: 556
Location: Сочи, Хоста

PostPosted: Sat Jan 15, 2011 4:53 pm    Post subject: Reply with quote

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

Quote:
Многое уже написано, просто надо почитать темы

Я того же мнения, всё это прочитано и освоено, и вставлено в меню, которое 2800 строк, из того что написано... но есть то, что мне не хватает, позже, выложу что получится... Все спасибо за участие
Back to top
View user's profile Send private message Send e-mail Visit poster's website
VladSh



Joined: 29 Nov 2006
Posts: 2610
Location: Киев, Русь

PostPosted: Sat Jan 15, 2011 5:36 pm    Post subject: Reply with quote

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

Потом Вы даёте ссылки...

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

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


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

Добавлено:
По последнему вопросу: если разделить окно текущего файла и нажать правой клавишей мыши на разделителе, то выскочит менюшка, с помощью которой можно регулировать размеры, т.е. это не скрипт, а встроенная возможность редактора.
Back to top
View user's profile Send private message Visit poster's website
Andrey_A_A



Joined: 03 Jun 2010
Posts: 556
Location: Сочи, Хоста

PostPosted: Wed Jan 19, 2011 1:53 pm    Post subject: Reply with quote

Спасибо VladSh , ты настоящий друг
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Andrey_A_A



Joined: 03 Jun 2010
Posts: 556
Location: Сочи, Хоста

PostPosted: Sun Jan 23, 2011 7:50 pm    Post subject: Reply with quote

Столкнулся в очередной раз с проблемой запуска скрипта с параметрами
этот вариант работает
Code:
Call("Scripts::Main", 1, "InsertDate.js", "`dd MMMM yyyy`")

но когда в параметрах кавычки, то вообще не возможно вызвать т.к. выдаёт ошибку , к примеру:
Code:
Call("Scripts::Main", 1, "getHash.js", "`-type="MD5" -autoCalc=true -dialog=false`")

и как быть?
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Infocatcher



Joined: 06 Aug 2007
Posts: 1619

PostPosted: Sun Jan 23, 2011 8:30 pm    Post subject: Reply with quote

Andrey_A_A wrote:
и как быть?
Там же пример вызова есть.
Code:
Call("Scripts::Main", 1, "getHash.js", `-type="MD5" -autoCalc=true -dialog=false`)
или
Code:
Call("Scripts::Main", 1, "getHash.js", "-type='MD5' -autoCalc=true -dialog=false")


Кстати, autoCalc влияет только на диалог.

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

P.S. Заодно убрал избыточные кавычки в примерах для converter.js. Smile
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian) All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group