Page 56 of 74

Posted: Tue Oct 28, 2014 9:23 pm
by Cuprum
Skif_off wrote: А зачем? У скрипта может быть любой параметр с любой доступной переменной/переменной окружения, пример и параметры обычно есть в комментарии в начале скриптов.
Когда несколько примеров, как-то нагляднее-понятнее выглядит...

И еще вот какой момент, может кто разъяснит? В Scripts-Rus.txt там, где описан "Внешний вызов" показан такой общий вариант

Call("Scripts::Main", 1, "SCRIPT", "ARGUMENTS")

Получается, что все аргументы передаются внутри одной строки, но нашел тут вот такой пример

Code: Select all

"Наименование позиции меню/подсказки тулбара" Call("Scripts::Main", 1, "Script.js", "%f", 0)
Здесь еще есть 0. Что он в данном случае обозначает? Получается, он появляется уже после строки "ARGUMENTS", но в Scripts-Rus об этом ничего не сказано...

Posted: Tue Oct 28, 2014 11:44 pm
by Skif_off
Cuprum
Переменная как переменная, не понимаю, чего вы привязались к ней :) Вам же достаточно

Code: Select all

-"" Command(4158) Icon("%a\AkelFiles\ico\search.ico")
чтобы понять, как пользоваться %a? Или системной в параметрах

Code: Select all

 -"Открыть файлы из списка" Call("Scripts::Main", 1, "OpenSaveMask.js", `-OpenList="%Temp%\ListFiles.lst"`) Icon("%a\AkelFiles\Plugs\ToolBar.dll", 2)
Cuprum wrote:...нашел тут вот такой пример

Code: Select all

"Наименование позиции меню/подсказки тулбара" Call("Scripts::Main", 1, "Script.js", "%f", 0)
Здесь еще есть 0. Что он в данном случае обозначает? Получается, он появляется уже после строки "ARGUMENTS", но в Scripts-Rus об этом ничего не сказано...
Могу предположить, что 0 задаёт работу в фоне, т.е. выполняется параллельно, но в AkelHistory-Rus.txt: AkelPad 4.0.0 alpha 1 (28.05.2008), а в текущей документации такого нет, но инфа, как вызывать скрипт с параметрами, есть - я бы забил.

______________________________
Такой вопрос возник: если в скрипте вызываю другой скрипт, например,

Code: Select all

AkelPad.CallW("Scripts::Main", 1, "Multi_SR.js", '"\<p\>\n[ \t]*" "<p>" 0 1 0 16 3')
в jsBeautifier.js, то параметр после "Scripts::Main" нужно менять с 1 на 2?

Добавлено:
Кажется, всё-таки надо. Исправил, но почему не всплыли проблемы? Слишком быстро работало?

Posted: Wed Oct 29, 2014 1:11 am
by Andrey_A_A

Code: Select all

если в скрипте вызываю другой скрипт
Skif_off, где-то писалось, что надо, + ещё надо ScriptNoMutex()

Code: Select all

Call AkelPad.ScriptNoMutex()
Call AkelPad.Call("Scripts::Main", 2, "BracketsGoTo.js", "'L'")
Когда несколько примеров, как-то нагляднее-понятнее выглядит...
Cuprum, готовлю к выпуску сборку AkelPad Image 29 - вот несколько примеров:

MenuBarText.akelmenu

Posted: Fri Oct 31, 2014 9:06 am
by Instructor
Skif_off wrote:Если можно, ответьте, пожалуйста, в теме, чтобы можно было найти, если что
Если скриптом А используется вызов другого скрипта Б с ожиданием, то необходимо перед этим вызвать AkelPad.ScriptNoMutex() один раз:

Code: Select all

AkelPad.ScriptNoMutex();
AkelPad.Call("Scripts::Main", 2, "Б");
AkelPad.Call("Scripts::Main", 2, "Б");
AkelPad.Call("Scripts::Main", 2, "Б");
Т.к. по умолчанию запуск одновременной работы скриптов блокирован и без ScriptNoMutex скрипт Б будет ждать, когда завершится скрипт А, а скрипт А не завершается, т.к. ждет, когда завершится скрипт Б.

Posted: Mon Nov 10, 2014 10:37 pm
by VladSh
Instructor
Хотел задать последний параметр в ReadFile без предыдущих необязательных.
Такая запись выдаёт ошибку синтаксиса:

Code: Select all

result = AkelPad.ReadFile(pFile,,,, nBytesMax);
а такая вешает AkelPad:

Code: Select all

result = AkelPad.ReadFile(pFile, nBytesMax);
Причём вешает странно: когда скрипт работает (процессор выжирается на 100% на файле 500kb), то AkelPad почему-то доступен, а когда проц падает до нормального состояния, то AkelPad блокируется и приходится снимать задачу.

P.S. С передачей параметров разобрался, - ненужные параметры просто забил нулями.

Добавлено: Прога на "больших" файлах вешается даже обычным

Code: Select all

result = AkelPad.ReadFile(pFile);

Posted: Wed Nov 12, 2014 7:45 am
by Instructor
VladSh wrote:P.S. С передачей параметров разобрался, - ненужные параметры просто забил нулями.
Нужно не забивать нулями, а указывать undefined или значение по умолчанию.

Code: Select all

var pText=AkelPad.ReadFile("C:\\1.txt", undefined, undefined, undefined, nBytesMax);

Code: Select all

var pText=AkelPad.ReadFile("C:\\MyFile.txt", 0xD, 0, 0, nBytesMax);

Posted: Wed Nov 12, 2014 9:14 am
by VladSh
Instructor
Спасибо! undefined - хорошо! :)

Posted: Wed Nov 12, 2014 12:55 pm
by Instructor
VladSh
Всё таки при проверке выяснилось, что использовать undefined некорректно - плагину приходят нули. Так что правильный вариант указывать значения по умолчанию явно:

Code: Select all

var pText=AkelPad.ReadFile("C:\\MyFile.txt", 0xD, 0, 0, nBytesMax);

Posted: Wed Nov 12, 2014 1:49 pm
by FeyFre
Instructor, а если аргументы переоформить в VARIANT? Тогда по идее будет приходить VT_EMPTY (не проверял если честно пока).

Posted: Sat Nov 15, 2014 8:01 pm
by KDJ
Instructor
In section "*** Methods description ***" of documentation, I suggest to add the marker "ActiveX" to the method name eg:

Code: Select all

AkelPad.GetInstanceDll (+ActiveX)
_________________________________

Posted: Tue Nov 18, 2014 11:31 am
by Instructor
KDJ
Done.

Posted: Tue Nov 18, 2014 8:13 pm
by KDJ
Instructor
Thanks, AkelPadMethodsView_test.js - test version for Scripts v.15.8: KDJ.zip.

Posted: Wed Nov 19, 2014 3:57 pm
by Instructor
KDJ
Works fine.

Posted: Sat Dec 06, 2014 11:22 pm
by VladSh
Подскажите пожалуйста, как передать в скрипт через аргументы обычную двойную кавычку?
Типа такого:

Code: Select all

..., `-param1='"' -param2='"'`)
не работает. Как только не пытался, и слэшами экранировал, ничего не выходит.

Posted: Sun Dec 07, 2014 2:57 am
by Andrey_A_A
VladSh wrote:Подскажите пожалуйста, как передать в скрипт через аргументы обычную двойную кавычку?
С этим когда-то сталкивался: решается передачей любого ключевого слова (или наборов символов), а в скрипте оно заменяется на кавычки

или так можно:

Code: Select all

Call("Scripts::Main", 1, "+Test.vbs", `Chr(34) Chr(34)`)

Code: Select all

With WScript Cnt = .Arguments.Count
  If Cnt > 0 Then
    param1 = Eval(.Arguments(0)) : If Cnt > 1 Then param2 = Eval(.Arguments(1))
  End If
End With
MsgBox "Переменная param1 =" & vbNewLine & "<" & param1 & ">"
MsgBox "Переменная param2 =" & vbNewLine & "<" & param2 & ">"