Нюансы Vbs скриптинга в AkelPad`e
- Author
- Message
-
Offline
- Posts: 30
- Joined: Sat Nov 26, 2011 1:52 pm
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
-
Offline
- Posts: 874
- Joined: Sat Jan 16, 2010 2:03 pm
Egor(3).
Кроме синтаксиса есть и иные различия. Пусть и малозаметные, но иногда "вдруг" становящиеся важными.
Например в списке методов AkelPad есть начинающиеся с символа подчеркивания: _TCHAR, _TSTR, _TSIZE, _X64. В VBS такие имена недопустимы, поэтому если такие методы вам в скрипте понадобятся, то очевидно, что этот скрипт будет написн на JS. А когда что-то кем-то ранее написано на JS, то логичнее не изобретать велосипед на VBS, а просто "подворовывать" из имеющегося. Но с другой стороны, в Jscript нет, например, полного аналога паре Asc()/Chr() из VBScript (если возникает необходимость работать не с юникодом, а именно с байтовыми кодировками), поэтому отказываться от VBScript окончательно ни к чему.
Кроме синтаксиса есть и иные различия. Пусть и малозаметные, но иногда "вдруг" становящиеся важными.
Например в списке методов AkelPad есть начинающиеся с символа подчеркивания: _TCHAR, _TSTR, _TSIZE, _X64. В VBS такие имена недопустимы, поэтому если такие методы вам в скрипте понадобятся, то очевидно, что этот скрипт будет написн на JS. А когда что-то кем-то ранее написано на JS, то логичнее не изобретать велосипед на VBS, а просто "подворовывать" из имеющегося. Но с другой стороны, в Jscript нет, например, полного аналога паре Asc()/Chr() из VBScript (если возникает необходимость работать не с юникодом, а именно с байтовыми кодировками), поэтому отказываться от VBScript окончательно ни к чему.
-
Offline
- Posts: 30
- Joined: Sat Nov 26, 2011 1:52 pm
Понятно. А почему они начинаются именно с "_" — это какая-то неизбежная необходимость или просто разрабам "так захотелось"?opk44 wrote:В списке методов AkelPad есть начинающиеся с символа подчеркивания: _TCHAR, _TSTR, _TSIZE, _X64. В VBS такие имена недопустимы, поэтому если такие методы вам в скрипте понадобятся, то очевидно, что этот скрипт будет написн на JS
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Так, вроде, открытым текстом написано:
(Scripts-Rus.txt)
А вот аналога для _X64 что-то не видать.
P.S. И да, underscore
Code: Select all
'VBScript deny names start with (_) underscope
if AkelPad.IsOldWindows() then
TCHAR="A"
TSIZE=1
TSTR=0
else
TCHAR="W"
TSIZE=2
TSTR=1
end if
А вот аналога для _X64 что-то не видать.
P.S. И да, underscore
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
А почему у нас правостороннее дорожное движение, а у японцев и англичан левостороннее?А почему они начинаются именно с "_" — это какая-то неизбежная необходимость или просто разрабам "так захотелось"?
В общем легенда такая.
Заметили что эти константы имеют общее? А именно: _T
Так такая вот комбинация символов используется в Microsoft SDK для унификации структуры приложений которые должны быть совместимы на разных версиях оболочки: на ANSI-версиях и на UNICODE-версиях. Ну а так как это довольно таки удобно, то почему бы его тут не сделать?
-
Offline
- Posts: 30
- Joined: Sat Nov 26, 2011 1:52 pm
Я все-таки так и не понял: когда разрабы создавали AkelPad и его объектную модель, они были _вынуждены_ использовать символ "_" в начале некоторых констант, или они просто решили, что это типа прикольно ("похоже на C++")? Я не программист и не имею ни малейшего представления, как там WSH прикручен к AkelPad, я рассуждаю, наверное, тупо, но: если плагин Scripts основан на WSH, а под WSH пишут либо на JS, либо на VBS, то почему произошло так, что VBS применительно к AkelPad претерпел "расовую дискриминацию":)?
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
Egor
Также у программистов принято начинать с символа _ или называть только символом _ переменные либо функции, которые не имеют значения для процесса решения прикладной задачи(служебные) либо вообще не нужны. Например, код для обмена двух переменных значениями:
В этом примере переменная _temp не играет никакой полезной прикладной роли в отличии от supernumberone и supernumbertwo, а потому её назвали с подчеркиванием в голове. Конечно могли назвать и temp, но тогда при обилии таки временных переменных среда разработки засоряла бы список подсказки на слова начинающиеся с temp, и вместо того что-бы сразу же подсказать например какого-нибудь temperature_last_known, оно засорит его temp1,temp2,temp2, и т.д. и вся польза от подсказки улетучится.
Второй пример:
В этом примере макросы _T, _TCHAR и _tprintf - служебныу макросы, суть которых знать не обязательно, ибо прикладной задачи не несут. Потому оформлены с _. Так удобно, ибо программист знает что полезной прикладной функции они не несут.
Также у программистов принято начинать с символа _ или называть только символом _ переменные либо функции, которые не имеют значения для процесса решения прикладной задачи(служебные) либо вообще не нужны. Например, код для обмена двух переменных значениями:
Code: Select all
int supernumberone = 55;
int supernumbertwo = 66;
// меняем используя временную пременную
int _temp = supernumberone;
supernumberone = supernumbertwo;
supernumbertwo = _temp;
Второй пример:
Code: Select all
const _TCHAR* format = _T("Super format string %s%s%s");
_tprintf(format,_T("Hello"),_T(", "),_T("World!\n"))