Page 44 of 74

Posted: Mon Jun 18, 2012 6:10 am
by Instructor
Infocatcher
oSet.Begin все делает правильно - выдает 0, если ini файла не существует.

Posted: Mon Jun 18, 2012 6:18 am
by Infocatcher
Хы, как-то я не уловил этот момент из доки.
Неплохо бы что-нибудь соответствующее дописать.
Или пример дополнить, скажем, так:

Code: Select all

  var oSet=AkelPad.ScriptSettings();

  pString="default value";
  bMultiline=0;
  if (oSet.Begin(WScript.ScriptBaseName, 0x1 /*POB_READ*/))
  {
    pString=oSet.Read("String", 3 /*PO_STRING*/);
    bMultiline=oSet.Read("Multiline", 1 /*PO_DWORD*/);

    oSet.End();
  }

У меня есть смутные подозрения, что нечто вроде уже обсуждалось, но...
Мне кажется, в модуль чтения/записи настроек надо бы встроить вывод сообщений об ошибках.
Потому как если нельзя прочитать или записать, то скрипт вряд ли будет работать правильно. Да и не нормально это, когда прав нету или еще какие ошибки идут.
Ну, и чтобы в каждом скрипте проверок кучу не вставлять.

Posted: Mon Jun 18, 2012 6:47 am
by Infocatcher
Делаем пустой read-only ini, а ошибки не происходит:

Code: Select all

var oSet = AkelPad.ScriptSettings();
if(oSet.Begin(WScript.ScriptBaseName, 0x2 /*POB_SAVE*/)) {
	WScript.Echo("Writed: " + oSet.Write("test", 3 /*PO_STRING*/, "value"));
	oSet.End();
}
То есть мало того, что не ругается, так еще и API обманывает. :)

Posted: Mon Jun 18, 2012 7:03 am
by Instructor
Infocatcher
См. возвращаемое значение "oSet.End();". Этот метод сохраняет файл.

Posted: Wed Jul 04, 2012 2:06 pm
by [Yustas.NeO]
Опять стало повторяться "После последовательно Undo-Redo все символы переноса строки, попавшие в Undo, становятся из умолчательных r+n в r.", но теперь - при использовании скриптов. Поэтому пишу сюда...

Проверял на чистой установке (причем даже обновился через апдейтер), только "SpecialChar" и "Scripts" плагины:
- Открываем AkelPad; вводим: "1[Enter]1[Enter]1[Enter]1[Enter]1[Enter]1[Enter]1"; выделяем, допустим, все, кроме двух первых и двух последних строк;
- Вызываем скрипт "SearchReplace.js"; вводим "Что:" - "1"; "Чем:" - "1"; ставим галочку "В выделении"; жмем "Заменить все";
- Делаем "Undo" "Redo";
- Переносы в выделении стали из "rn" в "r".

Posted: Wed Jul 04, 2012 7:29 pm
by KDJ
For me, "\r\n" sometimes converts to "\n".
After saving this, in one file there are two formats of new line: Windows ("\r\n") and Unix ("\n") or Windows and Mac ("\r").

And how to find a line ending with "\r" or "\n"?
Find with regular expressions:
\r[^\n]
or
[^\r]\n
does not work.

Posted: Wed Jul 11, 2012 1:10 pm
by Andrey_A_A
может можно добавить параметр, чтобы окно не вылетало
viewtopic.php?p=18657#p18657

Posted: Fri Jul 13, 2012 8:10 pm
by KDJ
RegisterCallback method from ActiveX does not work.
Wscript crashes when you run this script:
wscript.exe test.js

Code: Select all

var AkelPad=new ActiveXObject("AkelPad.Document");
var oSys=AkelPad.SystemFunction();
var lpEnumWindowsCallback;
var nStopAfter=3;

if (lpEnumWindowsCallback=oSys.RegisterCallback("EnumWindowsProc"))
{
  oSys.Call("user32::EnumWindows", lpEnumWindowsCallback, 0);
  oSys.UnregisterCallback(lpEnumWindowsCallback);
}

function EnumWindowsProc(hWnd, lParam)
{
  //Convert hWnd to hex
  if (hWnd < 0) hWnd=(0xFFFFFFFF + 1) + hWnd;
  hWnd="0x" + hWnd.toString(16).toUpperCase();

  //Show parameters
  WScript.Echo("hWnd=" + hWnd + "; lParam=" + lParam);

  if (--nStopAfter <= 0)
    return false;
  else
    return true;
}

Posted: Sat Jul 14, 2012 4:46 pm
by Instructor
KDJ wrote:And how to find a line ending with "\r" or "\n"?
Added: arguments in AkelPad.GetTextRange, AkelPad.GetSelText methods to retrieve text in new line format without changing.
Added: RegisterCallback now works in ActiveX, using two additional arguments.
Will be available after 4.7.7 release.

Posted: Sat Jul 14, 2012 8:18 pm
by KDJ
Instructor, thank you very much, waiting for the new version.

Posted: Tue Jul 24, 2012 3:15 pm
by Instructor
Добавлено: в методы AkelPad.GetTextRange, AkelPad.GetSelText аргумент для получения текста с форматом новой строки без изменения.
Добавлено: RegisterCallback теперь работает в ActiveX, используя два дополнительных аргумента.

Added: arguments in AkelPad.GetTextRange, AkelPad.GetSelText methods to retrieve text in new line format without changing.
Added: RegisterCallback now works in ActiveX, using two additional arguments.


Scripts plugin v11.2

Posted: Tue Jul 24, 2012 4:44 pm
by VladSh
Отлично, что при открытии Hotkey-плага видно красным дублирующиеся комбинации! Правда сыпет много сообщениями.
Но теперь повторное нажатие кнопки задания комбинации клавиш (комбинация длинная, всю не видно было, и я не помнил, нажимал или ешё нет) на той же строке в окне скриптов выводит предупреждающее сообщение, которое можно было бы не выводить, т.е. просто ничего не делать. Либо дизаблить кнопку задания, чтобы видно было, задал или нет.

Posted: Tue Jul 24, 2012 7:46 pm
by Infocatcher
Почему-то

Code: Select all

AkelPad.SaveFile(AkelPad.GetEditWnd(), WScript.ScriptFullName, 65001, true);
сохраняет без BOM.
Причем

Code: Select all

AkelPad.SaveFile(AkelPad.GetEditWnd(), WScript.ScriptFullName, 65001, 1);
работает.
С чтением, вроде бы, все нормально.

Posted: Tue Jul 24, 2012 11:03 pm
by Infocatcher
Я так понимаю, AkelPad.SaveFile() не позволяет указать формат новой строки? Неплохо бы добавить.
И все-таки очень хотелось бы увидеть сохранение строки в файл. А то WSH только две кодировки умеет.

Posted: Wed Jul 25, 2012 1:12 am
by VladSh
Infocatcher wrote:А то WSH только две кодировки умеет.
Да, это печаль ((