Если это позволит сохранять не в реестре, то... YAAAAAHHHHOOOO ))Добавлено: объект AkelPad.ScriptSettings() и его методы Begin, Read, Write, Delete, End.
Scripts plugin
- Author
- Message
-
Offline
- Posts: 1873
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Отлично!Instructor wrote:Добавлено: объект AkelPad.ScriptSettings() и его методы Begin, Read, Write, Delete, End.
Но вот новый SearchReplace.js что-то не учитывает. При запуске без ini:
Code: Select all
Scripts плагин
---------------------------
Скрипт: ...\Scripts\SearchReplace.js
Строка: 291
Символ: 15
Ошибка: 'lpFindStrings' - есть null или не является объектом
Код: 800A138F
Источник: Ошибка выполнения Microsoft JScript
Fr0sT
Позволит.

[Upd]
А, ну да:
Code: Select all
if (oSet.Begin(WScript.ScriptBaseName, 0x1 /*POB_READ*/))
{
...
lpFindStrings=new Array(nSearchStrings);
...
oSet.End();
}
Code: Select all
var oSet=AkelPad.ScriptSettings();
if(oSet.Begin(WScript.ScriptBaseName, 0x1 /*POB_READ*/)) {
WScript.Echo("Ok"); // Если ini-файл существует
oSet.End();
}
else
WScript.Echo("Fail");
Code: Select all
oSet.Begin(WScript.ScriptBaseName, 0x1 /*POB_READ*/);
bSensitive=oSet.Read("Sensitive", 1 /*PO_DWORD*/, false /*defaulr value*/);
bMultiline=oSet.Read("Multiline", 1 /*PO_DWORD*/, false /*defaulr value*/);
oSet.End();
-
Offline
- Posts: 3234
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
-
Offline
- Posts: 2248
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
VladSh
oSer.Read и иже с ним - по сути тот же интерфейс, которым пользуются плагины для сохранения настроек. Т.е. он сам решает куда писать и откуда читать настройки: реестр или файл. Только множества настроек(ну и хранилищ) плагинов и скриптов не пересекаются. Эквивалентно использованию
oSer.Read и иже с ним - по сути тот же интерфейс, которым пользуются плагины для сохранения настроек. Т.е. он сам решает куда писать и откуда читать настройки: реестр или файл. Только множества настроек(ну и хранилищ) плагинов и скриптов не пересекаются. Эквивалентно использованию
Code: Select all
AkelPad.SendMessage(AkelPad.GetMainWindow(),AKD_BEGINOPTION, POB_READ, "Scripts\\"+scriptname)
-
Offline
- Posts: 3234
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Такая строка меню
и скрипт
всегда дают "Fail"... Учитывая пред. сообщение я ожидал, что выдаст "myValue".
Code: Select all
-"Тест" Call("Scripts::Main", 1, "test.js", `-Value="myValue"`)
Code: Select all
var oSet = AkelPad.ScriptSettings();
if (oSet.Begin(WScript.ScriptBaseName, 0x1 /*POB_READ*/))
{
var pString = oSet.Read("Value", 3 /*PO_STRING*/);
WScript.Echo(pString);
oSet.End();
}
else
WScript.Echo("Fail");
-
Offline
- Posts: 2248
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
VladSh
Правильно, AkelPad.ScriptSettings не имеет никакого отношения к параметрам запуска. Это конфигурация. А Fail получаете потому что её ещё ни разу не записывали.
Предположим у Вас есть такой кодВ результате его работы получаете:
Если редактор настроен на сохранение в ini-файл, то у вас появится файл %AkelPadDir%\AkelFiles\Plugs\Scripts\qwerty_script.ini, содержимое которого
Если настроен на рееестр, то у вас появится ключ HKCU\SOFTWARE\AKELSOFT\AKELPAD\PLUGS\SCRIPTS\QWERTY_SCRIPT у которого есть значение с названием qwerty_param типа REG_SZ со значением qwerty_value
Теперь, если Вы поставите set.Begin("qwerty_script",0x1 /*POB_READ*/); и будете использовать функцию Read то получите обратно значение.
Правильно, AkelPad.ScriptSettings не имеет никакого отношения к параметрам запуска. Это конфигурация. А Fail получаете потому что её ещё ни разу не записывали.
Предположим у Вас есть такой код
Code: Select all
var set = AkelPad.ScriptSettings();
set.Begin("qwerty_script",0x2 /*POB_SAVE*/);
set.Write("qwerty_param",3,"qwerty_value");
set.End();
Если редактор настроен на сохранение в ini-файл, то у вас появится файл %AkelPadDir%\AkelFiles\Plugs\Scripts\qwerty_script.ini, содержимое которого
Code: Select all
[Options]
qwerty_param=qwerty_value
Теперь, если Вы поставите set.Begin("qwerty_script",0x1 /*POB_READ*/); и будете использовать функцию Read то получите обратно значение.
-
Offline
- Posts: 3234
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
FeyFre, это бесспорно круто, долго ждали
Я об этом:
а так бы вообще бомба была:


Я об этом:
Думал, что формат для разбора сложных агрументов будет унифицирован, и эта функцЕя будет встроена методом, чтобы её не тягать по скриптам.. Назвать бы её, например, ArgumentsParse, и чтобы она возвращала структуру со всеми аргументами. И обращаться к определённому аргументу по имени, типа:VladSh wrote:Мы ожидали метод GetArg в новой версии плага...Instructor wrote:...Кстати в разрабатываемой версии Scripts плагина -Path="C:\Dir 1" будет передаваться как один аргумент.Было бы здорово!
Code: Select all
var oArgs = AkelPad.ArgumentsParse();
var arg1 = oArgs("arg1Name");
Code: Select all
var oArgs = AkelPad.Parse(WScript.Arguments);
var arg1 = oArgs("arg1Name");

-
Offline
- Posts: 3234
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Instructor
Прошу к 0x2 добавить "или удаления", т.к. прочитав это, пытался для удаления использовать 0x4, а оно не работает...
И ещё более подробно расписать в доке, что означает "Начать операции записи с очисткой".
Добавлено: И ещё непонятно, после удаления в ini'шнике остаётся кусок... я так понимаю, что по умолчанию параметры записываются в секцию [Options].
Просьба в доке указать, как осуществлять записать в другую секцию.
Code: Select all
0x2 //POB_SAVE Начать операции записи.
0x4 //POB_CLEAR Начать операции записи с очисткой (POB_SAVE|POB_CLEAR).
И ещё более подробно расписать в доке, что означает "Начать операции записи с очисткой".
Добавлено: И ещё непонятно, после удаления в ini'шнике остаётся кусок... я так понимаю, что по умолчанию параметры записываются в секцию [Options].
Просьба в доке указать, как осуществлять записать в другую секцию.
-
Offline
- Site Admin
- Posts: 6403
- Joined: Thu Jul 06, 2006 7:20 am
Исправлено.Infocatcher wrote:Но вот новый SearchReplace.js что-то не учитывает.
Там же везде примеры естьVladSh wrote:...т.к. прочитав это, пытался для удаления использовать 0x4, а оно не работает...

Настройки могут быть записаны только в секцию Options.VladSh wrote:Просьба в доке указать, как осуществлять записать в другую секцию.
-
Offline
- Posts: 1873
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Отсюда вытекает одно неудобство.FeyFre wrote:Т.е. он сам решает куда писать и откуда читать настройки: реестр или файл.
Если захотелось разделить код и настройки (чтобы было удобнее обновлять скрипт), то в случае с хранением настроек в реестре править их пользователю будет гораздо менее удобно, чем *.ini.
Соответственно, отсюда хотелка – возможность принудительно заполучить парсер *.ini.
-
Offline
- Posts: 1873
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
FeyFre
Теперь уже логичнее будет куда-нибудь в Begin() добавить флаг для выбора местоположения настроек.
Все же уже есть. Всяко удобнее, чем с INIVALUEW/INIVALUEA ручками возиться.
Теперь уже логичнее будет куда-нибудь в Begin() добавить флаг для выбора местоположения настроек.
Code: Select all
if(oSet.Begin(WScript.ScriptBaseName, 0x1 /*POB_READ*/ | 0x8 /*INI*/)) { ... }
-
Offline
- Posts: 3234
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Infocatcher wrote:в случае с хранением настроек в реестре править их пользователю будет гораздо менее удобно, чем *.ini.
Тогда можно сделать, чтобы ini был нормального читабельного формата, чтобы его действительно можно было править вручную? А то эта ерунда как-то не способствует правке:Instructor wrote:...это не исключает работы с ini см. сообщение FeyFre.
Code: Select all
яю[и куча каких-то квадратиков (почему-то образец не вставился в форум)]