Scripts plugin
- Author
- Message
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Instructor
Есть ли возможность быстро проверить, есть ли агрумент в списке агрументов, без анализа на вхождение в результате от GetArgLine?
GetArgValue со значением по умолчанию всё-таки возвращает значение, и непонятно, был ли там аргумент этот или нет. Хотелось бы иметь возможность анализа, и, в зависимости от этого, писать логику. Т.е. хотелось бы иметь метод, т.к. перед этим вызывался GetArgValue, и все параметры собственно уже были считаны и разобраны.
Есть ли возможность быстро проверить, есть ли агрумент в списке агрументов, без анализа на вхождение в результате от GetArgLine?
GetArgValue со значением по умолчанию всё-таки возвращает значение, и непонятно, был ли там аргумент этот или нет. Хотелось бы иметь возможность анализа, и, в зависимости от этого, писать логику. Т.е. хотелось бы иметь метод, т.к. перед этим вызывался GetArgValue, и все параметры собственно уже были считаны и разобраны.
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
KDJ
Можно так:
VladShAkelPad.TextReplace(hEditWnd, "\\r", "", 0x00280001 /*FRF_BEGINNING|FRF_REGEXP|FRF_DOWN*/, true);
Можно так:
Code: Select all
var nArgValue=AkelPad.GetArgValue("ArgName", undefined);
if (nArgValue == undefined)
WScript.Echo("Not defined");
else
WScript.Echo("Defined");
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
Напишу сюда:
Просьба Инструктору, ну или всем желающим/имеющим возможность проверить насколько проворно подхватывает Microsoft Visual Studio(любых версия которые есть в наличии) скрипты, и как хорошо работает вахта, точки останова и прочая функциональность.
(У меня почему-то только MSVS 7.0 ведет себя адекватно. 8.0 и 9.0 цепляются но будто бы оглохли,... но в чем причина предположить не могу ибо запускаются на отличной от 7.0 системе)
Просьба Инструктору, ну или всем желающим/имеющим возможность проверить насколько проворно подхватывает Microsoft Visual Studio(любых версия которые есть в наличии) скрипты, и как хорошо работает вахта, точки останова и прочая функциональность.
(У меня почему-то только MSVS 7.0 ведет себя адекватно. 8.0 и 9.0 цепляются но будто бы оглохли,... но в чем причина предположить не могу ибо запускаются на отличной от 7.0 системе)
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
DV
Вахта, оно же дозор, оно же, внезапно, watch.
1. Этот пункт нужен если по какой-либо причине JIT отладка скриптов отключена. Если она включена то JIT автоматически запустит студию.(JIT настраивается внутри каждой студии независимо, так что можете иметь 4 студии и JIT даст Вам выбрать в какой отлаживаться) Нужно студию подцепить к процессу в котором выполняются скрипты. Делается это также как и подцепиться к нативной отладке уже существующего процесса:
1) Запускаем AP
2) Запускаем студию
3) Идем в меню Debug выбираем пункт Attach to.../Processes (по ходу сориентируетесь)
4) Находим в списка нашу жертву
5) Выставляем тип отладки - скрипты(другие типы обязательно снять, на всякий случай), и жмем кнопку Attach/Debug
Студия немножко подумает и либо матернется что что-то пошло не так, либо молча успешно вцепится.
2. Как задать точку останова - вопрос хитрый. Не инвазивного в отлаживаемый скрипт метода я пока не знаю. Инвазивный такой:
1) Грязный метод. В коде скрипта кидаем какой-нибудь исключение. Запускаем скрипт, студия его ловит - мы в дамках. Но это конец скрипта, ибо пошагать мы не сможем, а не отловленное исключение будет поймано плагином и автоматически завершит скрипт. Подходит лишь для недоделанных скриптов на этапе разработки.
2) Воспользуемся документированным в ECMA262 финтом(12.15). А именно оператором debugger; Ставим его в начале скрипта и пускаем скрипт. И наблюдаем как всплывает JIT(выбираем студию), либо если уже вцепились - студия открывает текст нашего скрипта и показывает останов на этом операторе. Теперь мы можем преспокойно по наставлять точек останова, вахту, прошагать сколько нужно, ну и далее по списку.
Вахта, оно же дозор, оно же, внезапно, watch.
1. Этот пункт нужен если по какой-либо причине JIT отладка скриптов отключена. Если она включена то JIT автоматически запустит студию.(JIT настраивается внутри каждой студии независимо, так что можете иметь 4 студии и JIT даст Вам выбрать в какой отлаживаться) Нужно студию подцепить к процессу в котором выполняются скрипты. Делается это также как и подцепиться к нативной отладке уже существующего процесса:
1) Запускаем AP
2) Запускаем студию
3) Идем в меню Debug выбираем пункт Attach to.../Processes (по ходу сориентируетесь)
4) Находим в списка нашу жертву
5) Выставляем тип отладки - скрипты(другие типы обязательно снять, на всякий случай), и жмем кнопку Attach/Debug
Студия немножко подумает и либо матернется что что-то пошло не так, либо молча успешно вцепится.
2. Как задать точку останова - вопрос хитрый. Не инвазивного в отлаживаемый скрипт метода я пока не знаю. Инвазивный такой:
1) Грязный метод. В коде скрипта кидаем какой-нибудь исключение. Запускаем скрипт, студия его ловит - мы в дамках. Но это конец скрипта, ибо пошагать мы не сможем, а не отловленное исключение будет поймано плагином и автоматически завершит скрипт. Подходит лишь для недоделанных скриптов на этапе разработки.
2) Воспользуемся документированным в ECMA262 финтом(12.15). А именно оператором debugger; Ставим его в начале скрипта и пускаем скрипт. И наблюдаем как всплывает JIT(выбираем студию), либо если уже вцепились - студия открывает текст нашего скрипта и показывает останов на этом операторе. Теперь мы можем преспокойно по наставлять точек останова, вахту, прошагать сколько нужно, ну и далее по списку.
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Ещё немного по определению позиции ошибки в коде.
Запуск такого скриптадаёт такое сообщение
Запуск такого скрипта
Code: Select all
var arr = new Array(3,5);
WScript.Echo(arr.indexOf(5));
Scripts плагин wrote:Скрипт: C:\Program Files\AkelPad\AkelFiles\Plugs\Scripts\test.js
Строка: 2
Символ: 1
Ошибка: Объект не поддерживает это свойство или метод
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Если запустить через wscript.exe, сообщение будет точно такое же. Так что вряд ли плагин тут может что-то сделать.VladSh wrote:даёт такое сообщение
P.S.
Code: Select all
var arr = [3,5];
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
Это точно: http://www.w3schools.com/jsref/jsref_indexof_array.aspFr0sT wrote:А indexOf у Array вообще нигде в спеках не указан.
Хотя это же про "полноценный" JavaScript, а не про M$ JScript.
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
"полноценный" JavaScript какой версии? Знаете, их там тоже десяток, как и JScript.
Собственно в чем проблема? Прямо написано какую версию EcmaScript реализовано в конкретных версиях JScript. Весь JScript до версии поставляемой с IE9 приблизительно соответствует JavaScript 1.5, т.е. EcmaScript 3rd edition. indexOf и иже с ними появились в пятой редакции(см. Annex E.15). Так что возможно стоит писать максимально совместимо с интерпретатором для которого пишете, а не со стандартом который лежит в основе. Тем более что задачи сделать переносное на другой интерпретатор не стоит.
Собственно в чем проблема? Прямо написано какую версию EcmaScript реализовано в конкретных версиях JScript. Весь JScript до версии поставляемой с IE9 приблизительно соответствует JavaScript 1.5, т.е. EcmaScript 3rd edition. indexOf и иже с ними появились в пятой редакции(см. Annex E.15). Так что возможно стоит писать максимально совместимо с интерпретатором для которого пишете, а не со стандартом который лежит в основе. Тем более что задачи сделать переносное на другой интерпретатор не стоит.