var oSet=AkelPad.ScriptSettings();
var nNumber;
if (oSet.Begin(WScript.ScriptBaseName, 0x2 /*POB_SAVE*/))
{
oSet.Write("Number", 1 /*PO_DWORD*/, Number("-5")); // Вот тут-то и подвох
oSet.End();
}
if (oSet.Begin(WScript.ScriptBaseName, 0x1 /*POB_READ*/))
{
nNumber=oSet.Read("Number", 1 /*PO_DWORD*/);
WScript.Echo("" + nNumber);
oSet.End();
}
(например, мы получаем "-5" в виде строки от пользователя)
Правда, в старой версии подвох был круче.
Posted: Thu May 12, 2011 5:50 am
by Instructor
Добавлено: отображение статуса скриптов в диалоге. Добавлено: метод Exec(). Добавлено: метод VarType(). Добавлено: метод IsInclude(). Добавлено: параметр в метод ScriptNoMutex(), который позволяет:
- Освободить поток программы от ожидания завершения скрипта. Только для внешнего вызова скрипта с кодом 2.
- Запретить запуск нескольких копий скрипта. Исправлено: метод ScriptSettings().Begin создавал ini с некорректным именем (Win95/98/Me).
Added: scripts status displaying in dialog. Added: method Exec(). Added: method VarType(). Added: method IsInclude(). Added: option in method ScriptNoMutex(), which allows to:
- Unlock main thread from waiting this script. Only if script is called with extenal call with code 2.
- Deny execution of the multiple script copies. Fixed: method ScriptSettings().Begin created ini with incorrect filename (Win95/98/Me).
Instructor wrote:Добавлено: отображение статуса скриптов в диалоге.
Теперь-то туда точно напрашивается возможность принудительного завершения зависшего скрипта.
И хорошо бы сортировку, чтобы можно было увидеть все запущенные скрипты сверху.
Posted: Thu May 19, 2011 9:44 am
by VladSh
Instructor
Прошу в метод Begin всё-таки добавить необязательный параметр или отдельный метод объекта oSet, которым указывать путь к папке с ini-файлом.
Вот пример: OpenSessionsDir.js, где можно было бы прочитать значение параметра SaveSessions через oSet, но этого сделать сейчас невозможно...(
Очень желательно, чтобы пути к ini можно было задавать не только внутри ...\AkelPad\... Если в пути нет вхождения текста "AkelPad" или лучше GetAkelDir(0), тогда, естественно, использовать только чтение из ini.
Ещё по старому (по диалогу скриптов):
- прошу добавить кнопку "Создать скрипт" - не надо будет постоянно искать нужную папку для сохранения (ещё одно удобство);
- прошу добавить возможность перехода в папку Include (там ведь тоже есть скрипты), для того, чтобы иметь возможность их быстрого открытия;
- добавить возможность быстро копировать имя скрипта - из контекстного меню;
- туда же, в контекстное меню на скрипте, можно зашарабанить "возможность принудительного завершения зависшего скрипта", о которой говорит Infocatcher.
Posted: Mon May 23, 2011 11:49 am
by private_joker
Начал-таки пользоваться скриптами, отметил некоторое неудобство меню скриптов: нет описания скрипта (кроме коментов в самом скрипте). Почему бы не выводить краткое описание в эдитбоксе, либо хинтом, при наведении курсора? Брать описание можно из комментария в самом скрипте (как doxygen например "дергает" описания для классов/методов из сорцов).
Posted: Wed May 25, 2011 6:48 pm
by Instructor
Исправлено: передача дескриптора oSys.RegisterCallback в AkelPad.MemCopy.
Fixed: pass oSys.RegisterCallback handle to AkelPad.MemCopy.
VladSh wrote:Вот пример: OpenSessionsDir.js, где можно было бы прочитать значение параметра SaveSessions через oSet, но этого сделать сейчас невозможно...
var oSet=AkelPad.ScriptSettings();
var pString;
if (oSet.Begin("..\\Sessions", 0x1 /*POB_READ*/))
{
pString=oSet.Read("SaveSessions", 3 /*PO_STRING*/);
oSet.End();
}
WScript.Echo(pString);
Posted: Fri Jun 03, 2011 7:26 pm
by Instructor
Добавлено: во внешних вызовах используется имя последнего обработанного скрипта, если указано "" вместо имени. Добавлено: сохранение имени последнего обработанного скрипта.
Added: in external calls the name of the last processed script used, if "" set instead of the name. Added: save name of last processed script.
Эта штука только для папки Plugins работает или можно передавать внешний (не AkelPad\...) путь?
Хотелось бы видеть это в доке (метод Begin), а то там написано, что параметр - "наименование скрипта"; да и забудется со временем...
Теперь будет чуть легче; спасибо!