Scripts plugin
- Author
- Message
-
Offline
- Site Admin
- Posts: 6403
- Joined: Thu Jul 06, 2006 7:20 am
-
Offline
- Posts: 2248
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
Нет, количество параметров остается постоянным - таким как задано в объекте функции которую передадут в вызов.
Для того что-бы создавать замыкания. Глобально объявленная функция видит только глобальные переменные. А функция объявленная внутри другой функции, цикла, ветвления видит также объявленные в них переменные, и может их использовать.(Собственно замыкания одно из мощнейших средств ECMA)
Для того что-бы создавать замыкания. Глобально объявленная функция видит только глобальные переменные. А функция объявленная внутри другой функции, цикла, ветвления видит также объявленные в них переменные, и может их использовать.(Собственно замыкания одно из мощнейших средств ECMA)
-
Offline
- Site Admin
- Posts: 6403
- Joined: Thu Jul 06, 2006 7:20 am
Исправлено: true после VariantChangeType превращался в -1.
Fixed: true after VariantChangeType became to -1.
Scripts plugin v7.3
Fixed: true after VariantChangeType became to -1.
Scripts plugin v7.3
-
Offline
- Posts: 2248
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
на сколько я понял RegisterCallback работает исключительно с __stdcall . А потому не может идти речи об неизвестном количестве аргументов.И меня интересует вариант, при котором не прийдется указывать количество аргументов при вызове RegisterCallback.
Да и не всякий скриптовый движок понимает такие финты. Это мы привыкли к JScript. В VBScript я соовсем не уверен. А если у кого-то ещё какой-нибудь язык подключен к WSH?
-
Offline
- Posts: 1
- Joined: Mon Nov 01, 2010 2:28 pm
А с файлами какого размера этот плагин успешно работает?
Попробовала воспользоваться функцией "Фильтр строк с регулярным выражением", на лог-файле в 80Мб при фильтре:
Строка содержит: "QUEUE"
Учитывать регистр
Оставить строки
меня благополучно выкинуло:
"Всплывающее окно приложения: AkelPad - [c:\tmp\newsmsgw\SystemOut_10.10.23_07.18.34.log]: AkelPad.exe - Ошибка приложения : Инструкция по адресу "0x00429e81" обратилась к памяти по адресу "0x00000000". Память не может быть "read".
"ОК" -- завершение приложения
"Отмена" -- отладка приложения
"
С файлом размера 2Мб всё прошло успешно.
У меня, конечно, всего 2,5Гб ОЗУ, но вроде бы должно было хватить.
Попробовала воспользоваться функцией "Фильтр строк с регулярным выражением", на лог-файле в 80Мб при фильтре:
Строка содержит: "QUEUE"
Учитывать регистр
Оставить строки
меня благополучно выкинуло:
"Всплывающее окно приложения: AkelPad - [c:\tmp\newsmsgw\SystemOut_10.10.23_07.18.34.log]: AkelPad.exe - Ошибка приложения : Инструкция по адресу "0x00429e81" обратилась к памяти по адресу "0x00000000". Память не может быть "read".
"ОК" -- завершение приложения
"Отмена" -- отладка приложения
"
С файлом размера 2Мб всё прошло успешно.
У меня, конечно, всего 2,5Гб ОЗУ, но вроде бы должно было хватить.
-
Offline
- Posts: 2248
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
Хотелка.
(Начну с конца)
В функцию AkelPad.MessageBox добавить 5-ый аргумент.
Этот аргумент функция(остальные типы не валидные).
Назначение:
Если аргумент валидный(функция, не null), то при отображении окна-сообщения добавить к нему птичку где-то снизу или справа от кнопок с надписью "прекратить выполнение скрипта"(если не валидный - птичку не ставим, ничего не меняется).
Если птичка стоит и нажали какую-нибудь кнопку, то плагин выполняет эту функцию а после того как она выполнилась вместо того что-бы вернуть управление скрипту, завершает его. Если птичка не стоит - работает как раньше.
Фича очень полезна при:
1) Отладке скриптов(а) - зачистка выделенной памяти AkelPad.MemAlloc(которая утечет до завершения процесса), Уничтожение системных объектов(окна, контексты, открытые файлы, другие дескрипторы)
2) При выполнении многошаговых контролируемых операций - может быть использована как команда "прервать задачу и откатить назад", вне зависимости от нажатой кнопки(иногда трех кнопок может и не хватить).
3) Ваш вариант.
PS: идею птички подсмотрел в alert/prompt/confirm боксах Оперы.
(Начну с конца)
В функцию AkelPad.MessageBox добавить 5-ый аргумент.
Этот аргумент функция(остальные типы не валидные).
Назначение:
Если аргумент валидный(функция, не null), то при отображении окна-сообщения добавить к нему птичку где-то снизу или справа от кнопок с надписью "прекратить выполнение скрипта"(если не валидный - птичку не ставим, ничего не меняется).
Если птичка стоит и нажали какую-нибудь кнопку, то плагин выполняет эту функцию а после того как она выполнилась вместо того что-бы вернуть управление скрипту, завершает его. Если птичка не стоит - работает как раньше.
Фича очень полезна при:
1) Отладке скриптов(а) - зачистка выделенной памяти AkelPad.MemAlloc(которая утечет до завершения процесса), Уничтожение системных объектов(окна, контексты, открытые файлы, другие дескрипторы)
2) При выполнении многошаговых контролируемых операций - может быть использована как команда "прервать задачу и откатить назад", вне зависимости от нажатой кнопки(иногда трех кнопок может и не хватить).
3) Ваш вариант.
PS: идею птички подсмотрел в alert/prompt/confirm боксах Оперы.
-
Offline
- Posts: 1873
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Интереса ради попробовал сделать интерфейс для работы с настройками в INI-файлах:
Все бы хорошо, но логичнее, чтобы подобный интерфейс предоставлял сам плагин. Причем тогда можно будет учитывать предпочтения пользователя и хранить настройки или в реестре, или в INI-файле:
HKEY_CURRENT_USER\Software\Akelsoft\AkelPad\Plugs\Scripts\someScript.js\name = val
и
[someScript.js]
name=val
(или отдельными файлами)
FeyFre
У меня есть похожая хотелка: нужна возможность «запланировать» выполнение произвольной функции на момент окончания работы скрипта. Причем хорошо бы, чтобы можно было добавить несколько таких функций – по аналогии с addEventListener("unload", func, false).
Все бы хорошо, но логичнее, чтобы подобный интерфейс предоставлял сам плагин. Причем тогда можно будет учитывать предпочтения пользователя и хранить настройки или в реестре, или в INI-файле:
HKEY_CURRENT_USER\Software\Akelsoft\AkelPad\Plugs\Scripts\someScript.js\name = val
и
[someScript.js]
name=val
(или отдельными файлами)
FeyFre
У меня есть похожая хотелка: нужна возможность «запланировать» выполнение произвольной функции на момент окончания работы скрипта. Причем хорошо бы, чтобы можно было добавить несколько таких функций – по аналогии с addEventListener("unload", func, false).