| View previous topic :: View next topic |
| Author |
Message |
VladSh
Joined: 29 Nov 2006 Posts: 2523 Location: Киев, Русь
|
Posted: Thu Oct 04, 2012 12:26 pm Post subject: |
|
|
Instructor
Есть ли возможность быстро проверить, есть ли агрумент в списке агрументов, без анализа на вхождение в результате от GetArgLine?
GetArgValue со значением по умолчанию всё-таки возвращает значение, и непонятно, был ли там аргумент этот или нет. Хотелось бы иметь возможность анализа, и, в зависимости от этого, писать логику. Т.е. хотелось бы иметь метод, т.к. перед этим вызывался GetArgValue, и все параметры собственно уже были считаны и разобраны. |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4680
|
Posted: Thu Oct 04, 2012 3:46 pm Post subject: |
|
|
KDJ
| Quote: | | AkelPad.TextReplace(hEditWnd, "\\r", "", 0x00280001 /*FRF_BEGINNING|FRF_REGEXP|FRF_DOWN*/, true); |
VladSh
Можно так:
| Code: | var nArgValue=AkelPad.GetArgValue("ArgName", undefined);
if (nArgValue == undefined)
WScript.Echo("Not defined");
else
WScript.Echo("Defined");
|
|
|
| Back to top |
|
 |
KDJ
Joined: 06 Mar 2010 Posts: 1081 Location: Poland
|
Posted: Thu Oct 04, 2012 6:28 pm Post subject: |
|
|
Instructor
Oh, really. Sometimes I forget about the basic things.  |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2523 Location: Киев, Русь
|
Posted: Thu Oct 04, 2012 9:16 pm Post subject: |
|
|
Instructor
Интересная возможность, прямо "из коробки" Спасибо! |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1907 Location: Vinnitsa, Ukraine
|
Posted: Sun Oct 14, 2012 8:30 pm Post subject: |
|
|
Напишу сюда:
Просьба Инструктору, ну или всем желающим/имеющим возможность проверить насколько проворно подхватывает Microsoft Visual Studio(любых версия которые есть в наличии) скрипты, и как хорошо работает вахта, точки останова и прочая функциональность.
(У меня почему-то только MSVS 7.0 ведет себя адекватно. 8.0 и 9.0 цепляются но будто бы оглохли,... но в чем причина предположить не могу ибо запускаются на отличной от 7.0 системе) |
|
| Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 734 Location: Kyiv, Ukraine
|
Posted: Mon Oct 15, 2012 6:51 am Post subject: |
|
|
FeyFre
А как это сделать? Как задать такую точку останова, чтобы Студия на неё среагировала? И что такое "вахта"? |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1907 Location: Vinnitsa, Ukraine
|
Posted: Mon Oct 15, 2012 8:28 am Post subject: |
|
|
DV
Вахта, оно же дозор, оно же, внезапно, watch. Ликбез для новичков watch - это такая услуга среды отладки, которая позволяет инспектировать рабочие данные налаживаемого объекта: значения переменных а также элементарных выражений. По объективным причинам Вахта работает исключительно во время отладочного останова. Разделяют четыре вида вахты(и то по внешнему виду, суть одна и та же): классическая-ручная вахта, собственно везде она так и называется watch - программист обязан самостоятельно выбрать данные которые нужно отобразить, вахта автоматическая и локальная(Autos, Locals) отображают данные с которыми оперирует команда и значения доступные текущей области видимости соответственно(если конечно такие понятия доступны в технологии отладки), ну и последняя - мониторинг памяти в сыром виде(разработчик указывает адрес и среда отображает порцию данных как они лежат в памяти побайтово(некоторые среды позволяют приводить к другим базовым типам: слова, плавающие и пр), если такая технология предусмотрена отладкой(первый тип вахты в сыром виде).
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(выбираем студию), либо если уже вцепились - студия открывает текст нашего скрипта и показывает останов на этом операторе. Теперь мы можем преспокойно по наставлять точек останова, вахту, прошагать сколько нужно, ну и далее по списку. |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2523 Location: Киев, Русь
|
Posted: Wed Oct 24, 2012 11:31 am Post subject: |
|
|
Ещё немного по определению позиции ошибки в коде.
Запуск такого скрипта
| Code: | var arr = new Array(3,5);
WScript.Echo(arr.indexOf(5)); | даёт такое сообщение
| Scripts плагин wrote: | Скрипт: C:\Program Files\AkelPad\AkelFiles\Plugs\Scripts\test.js
Строка: 2
Символ: 1
Ошибка: Объект не поддерживает это свойство или метод |
|
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1440
|
Posted: Wed Oct 24, 2012 12:40 pm Post subject: |
|
|
| VladSh wrote: | | даёт такое сообщение | Если запустить через wscript.exe, сообщение будет точно такое же. Так что вряд ли плагин тут может что-то сделать.
P.S. |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2523 Location: Киев, Русь
|
Posted: Wed Oct 24, 2012 1:27 pm Post subject: |
|
|
Infocatcher
Это я пробовал в первую очередь, но пытаясь indexOf завести дошёл и до такой жизни, как "new Array"  |
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1440
|
Posted: Wed Oct 24, 2012 2:22 pm Post subject: |
|
|
VladSh
Да там вообще логика за гранью моего понимания: в IE9 есть и Array.prototype.indexOf(), и JSON.parse()/stringify(), даже Object.create() есть, но вот в WSH ничего этого нет. |
|
| Back to top |
|
 |
Fr0sT
Joined: 24 Jul 2007 Posts: 855
|
Posted: Fri Oct 26, 2012 7:38 am Post subject: |
|
|
Кмк, они забили на развитие WSH в пользу Павершелла
А indexOf у Array вообще нигде в спеках не указан. |
|
| Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 734 Location: Kyiv, Ukraine
|
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1907 Location: Vinnitsa, Ukraine
|
Posted: Fri Oct 26, 2012 9:23 am Post subject: |
|
|
"полноценный" JavaScript какой версии? Знаете, их там тоже десяток, как и JScript.
Собственно в чем проблема? Прямо написано какую версию EcmaScript реализовано в конкретных версиях JScript. Весь JScript до версии поставляемой с IE9 приблизительно соответствует JavaScript 1.5, т.е. EcmaScript 3rd edition. indexOf и иже с ними появились в пятой редакции(см. Annex E.15). Так что возможно стоит писать максимально совместимо с интерпретатором для которого пишете, а не со стандартом который лежит в основе. Тем более что задачи сделать переносное на другой интерпретатор не стоит. |
|
| Back to top |
|
 |
Fr0sT
Joined: 24 Jul 2007 Posts: 855
|
Posted: Fri Oct 26, 2012 1:07 pm Post subject: |
|
|
DV
блин, точно. А я поверил javascript.ru... |
|
| Back to top |
|
 |
|
|
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
|
Powered by phpBB © 2001, 2005 phpBB Group
|