Scripts plugin
- Author
- Message
-
Offline
- Posts: 1949
- Joined: Sat Mar 06, 2010 7:40 pm
- Location: Poland
Instructor
Yes, this is it! Now IsAkelEdit and SetEditWnd works properly.
But after adding support for 8-byte integers on x64, many scripts stopped working.
For example, if ListView control is empty:
AkelPad.SendMessage(hWndListView, 0x100C /*LVM_GETNEXTITEM*/, -1, 0x2 /*LVNI_SELECTED*/);
returns 3-character string "\0-1" instead of number -1.
Yes, this is it! Now IsAkelEdit and SetEditWnd works properly.
But after adding support for 8-byte integers on x64, many scripts stopped working.
For example, if ListView control is empty:
AkelPad.SendMessage(hWndListView, 0x100C /*LVM_GETNEXTITEM*/, -1, 0x2 /*LVNI_SELECTED*/);
returns 3-character string "\0-1" instead of number -1.
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
KDJ
Now devepment version converts if value > 0x7FFFFFFF or value < -0x7FFFFFFF. Debug version if value > 0xFFFF or value < -0xFFFF.
Now devepment version converts if value > 0x7FFFFFFF or value < -0x7FFFFFFF. Debug version if value > 0xFFFF or value < -0xFFFF.
-
Offline
- Posts: 1949
- Joined: Sat Mar 06, 2010 7:40 pm
- Location: Poland
Instructor
In the development version all works properly.
Debug version shows some errors, but I don't know how to interpret them.
In KDJ.zip archive, I put two sample scripts (in dir \Test_for_Scripts_v16).
Can you check them?
-------
PS. About JavaScript integers: http://stackoverflow.com/questions/3071 ... hout-losin
In the development version all works properly.
Debug version shows some errors, but I don't know how to interpret them.
In KDJ.zip archive, I put two sample scripts (in dir \Test_for_Scripts_v16).
Can you check them?
-------
PS. About JavaScript integers: http://stackoverflow.com/questions/3071 ... hout-losin
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
KDJ
You can use debugger for scripts to step-by-step checking.
You can use debugger for scripts to step-by-step checking.
With new debug and dev versions possible to write (only for debug, dev version not need _PtrMath here):TextMarker.js wrote:function DrawColorButton(nID, lpDRAWITEMSTRUCT)
{
var hDC = AkelPad.MemRead(_PtrAdd(lpDRAWITEMSTRUCT, _X64 ? 32 : 24) /*offsetof(DRAWITEMSTRUCT, hDC)*/, 2 /*DT_QWORD*/);
var lpRect = _PtrAdd(lpDRAWITEMSTRUCT? _X64 ? 40 : 28) /*offsetof(DRAWITEMSTRUCT, rcItem)*/;
RunCommand.js wrote:function LoWord(nDwNum)
{
return _PtrMath(nDwNum, "&", 0xFFFF);
//return nDwNum & 0xFFFF;
}
function HiWord(nDwNum)
{
return _PtrMath(_PtrMath(nDwNum, ">>", 16), "&", 0xFFFF);
//return (nDwNum >> 16) & 0xFFFF;
}
function MkLong(nLoWord, nHiWord)
{
return _PtrMath(_PtrMath(nLoWord, "&", 0xFFFF), "|", _PtrMath(nHiWord, "<<", 16));
//return (nLoWord & 0xFFFF) | (nHiWord << 16);
}
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
KDJ
Code: Select all
AkelPad=new ActiveXObject("AkelPad.Document");
_PtrAdd=function(a, b) {return AkelPad.Global._PtrAdd(a, b);};
_PtrMath=function(a, b, c) {return AkelPad.Global._PtrMath(a, b, c);};
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
Добавлено: поддержка 8-ми байтовых чисел (__int64) на x64.
Добавлено: методы _PtrAdd, vbPtrAdd, _PtrMath, vbPtrMath для выполнения математических действий над 8-ми байтовыми числами.
Добавлено: внешний вызов с кодом 5 и 6 - взаимодействие с работающими скриптами.
Добавлено: AkelPad.MemPtrStr - получить строковое представление указателя.
Добавлено: необязательный аргумент AkelPad.MemStrPtr - получить указатель из pString, т.е конвертировать содержимое pString в число.
Исправлено: код "On Error Resume Next" на VBScript приводил к тому, что метод WScript.Quit переставал работать.
Исправлено: IsAkelEdit, SetEditWnd на x64.
Added: support for 8-byte integers (__int64) on x64.
Added: methods _PtrAdd, vbPtrAdd, _PtrMath, vbPtrMath to do mathematical operations with 8-byte integers.
Added: external call with code 5 and 6 - interact with running scripts.
Added: AkelPad.MemPtrStr - get string representation of a pointer.
Added: optional argument to AkelPad.MemStrPtr - get pointer from the pString, ie convert pString contents in number.
Fixed: code "On Error Resume Next" on VBScript cause method WScript.Quit to stop working.
Fixed: IsAkelEdit, SetEditWnd on x64.
Scripts plugin v16.0
Добавлено: методы _PtrAdd, vbPtrAdd, _PtrMath, vbPtrMath для выполнения математических действий над 8-ми байтовыми числами.
Добавлено: внешний вызов с кодом 5 и 6 - взаимодействие с работающими скриптами.
Добавлено: AkelPad.MemPtrStr - получить строковое представление указателя.
Добавлено: необязательный аргумент AkelPad.MemStrPtr - получить указатель из pString, т.е конвертировать содержимое pString в число.
Исправлено: код "On Error Resume Next" на VBScript приводил к тому, что метод WScript.Quit переставал работать.
Исправлено: IsAkelEdit, SetEditWnd на x64.
Added: support for 8-byte integers (__int64) on x64.
Added: methods _PtrAdd, vbPtrAdd, _PtrMath, vbPtrMath to do mathematical operations with 8-byte integers.
Added: external call with code 5 and 6 - interact with running scripts.
Added: AkelPad.MemPtrStr - get string representation of a pointer.
Added: optional argument to AkelPad.MemStrPtr - get pointer from the pString, ie convert pString contents in number.
Fixed: code "On Error Resume Next" on VBScript cause method WScript.Quit to stop working.
Fixed: IsAkelEdit, SetEditWnd on x64.
Scripts plugin v16.0
-
Offline
- Posts: 670
- Joined: Thu Jun 03, 2010 8:47 am
- Location: Сочи, Хоста
- Contact:
Instructor
Поясните пожалуйста на счёт функций
1. Поддерживается только ini?
2. ANSI кодировка не поддерживается?
3. Ключи берутся только из секции [Options] ?
4. Можно ли прописывать просто путь к настройкам? Ведь они могут быть как вне папки Scripts (например в корне AkelPad), так и в подпапке Scripts\File\
Описания не встретил, выяснил эти моменты в ходе тестирования.
Может есть ещё какие-то особенности?
Поясните пожалуйста на счёт функций
Code: Select all
AkelPad.ScriptSettings().Begin
AkelPad.ScriptSettings().Read
AkelPad.ScriptSettings().Write
AkelPad.ScriptSettings().Delete
AkelPad.ScriptSettings().End
2. ANSI кодировка не поддерживается?
3. Ключи берутся только из секции [Options] ?
4. Можно ли прописывать просто путь к настройкам? Ведь они могут быть как вне папки Scripts (например в корне AkelPad), так и в подпапке Scripts\File\
Описания не встретил, выяснил эти моменты в ходе тестирования.
Может есть ещё какие-то особенности?
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
Да.1. Поддерживается только ini?
Нет.2. ANSI кодировка не поддерживается?
Да.3. Ключи берутся только из секции [Options] ?
Через относительные пути:4. Можно ли прописывать просто путь к настройкам? Ведь они могут быть как вне папки Scripts (например в корне AkelPad), так и в подпапке Scripts\File\
Code: Select all
if (oSet.Begin("..\\..\\..\\MyScript", 0x2 /*POB_SAVE*/))
Code: Select all
if (oSet.Begin("File\\MyScript", 0x2 /*POB_SAVE*/))
-
Offline
- Posts: 1949
- Joined: Sat Mar 06, 2010 7:40 pm
- Location: Poland
Instructor
You can not edit some scripts if the interface language is other than English or Russian.
Example:
1, Run AkelPad.
2. Open Scripts dialog box (Alt+P), choose all columns to display and close Scripts dialog.
3. Set interface language to Polish.
4. Restart AkelPad.
5. Open Scripts dialog box (Alt+P).
6. Select SearchReplace.js and open it for editing (Alt+E).
7. Insert to SearchReplace.js text any character(s).
8. Try save it (Ctrl+S). You can not save the file!
Polish message:
"Nie można otworzyć pliku "E:\...\AkelPad\AkelFiles\Plugs\Scripts\SearchReplace.js"."
this is:
MSG_CANNOT_OPEN_FILE "Cannot open file ""%s""."
You can not edit some scripts if the interface language is other than English or Russian.
Example:
1, Run AkelPad.
2. Open Scripts dialog box (Alt+P), choose all columns to display and close Scripts dialog.
3. Set interface language to Polish.
4. Restart AkelPad.
5. Open Scripts dialog box (Alt+P).
6. Select SearchReplace.js and open it for editing (Alt+E).
7. Insert to SearchReplace.js text any character(s).
8. Try save it (Ctrl+S). You can not save the file!
Polish message:
"Nie można otworzyć pliku "E:\...\AkelPad\AkelFiles\Plugs\Scripts\SearchReplace.js"."
this is:
MSG_CANNOT_OPEN_FILE "Cannot open file ""%s""."
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Instructor
При несовпадении типов в том, что задан в GetArgValue в значении по умолчанию и переданного значения в аргументах, вылетает ошибка:
Хотелось бы видеть что-то типа "Несовпадение типов..." и верный номер строки ошибки, а не 1.
При несовпадении типов в том, что задан в GetArgValue в значении по умолчанию и переданного значения в аргументах, вылетает ошибка:
Можно, чтобы для этого случая сделать более верное отображение информации об ошибке?Scripts плагин wrote:---------------------------
Строка: 1
Символ: 1
Ошибка: Синтаксическая ошибка
Код: 800A03EA
Источник: Ошибка компиляции Microsoft JScript
---------------------------
Да Нет
---------------------------
Хотелось бы видеть что-то типа "Несовпадение типов..." и верный номер строки ошибки, а не 1.