Тема: VBS: как определить имя родительской функции
Коллеги, подскажите - как в vbscript внутри функции определяется, если это конечно реально, имя родительской функции-процедуры, которая вызывала текущую? Или номер вложенности, если таковое имеется?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Серый форум → Общение → Windows Script Host, HTA (VBScript, JScript) → VBS: как определить имя родительской функции
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Коллеги, подскажите - как в vbscript внутри функции определяется, если это конечно реально, имя родительской функции-процедуры, которая вызывала текущую? Или номер вложенности, если таковое имеется?
Мне, например, такое не известно.
А какова цель?
Пара функций была изначально задумана для отдельного использования (вызываются кнопками в HTA) и результат своей работы они выводили диалоговыми окнами, сейчас я возвращаемый ими результат использую еще и из процедуры, в ходе которой наличие диалогов уже нежелательно.
Думал отсечь вывод диалога по имени "родителя", но видимо прийдется просто добавить в функции параметр для определения необходимости вывода диалогов.
Гуру, по ходу еще вопрос - в пользовательских vbscript-овых функциях можно организовать необязательные параметры ?
можно организовать необязательные параметры ?
Я не гуру, но отвечу. Нет, но есть обходное решение. В некоторой степени красивое.
function max(a)
if not isarray(a) then
max = a
exit function
end if
max = a(0)
for i = 1 to ubound(a)
if a(i) > max then
max = a(i)
end if
next
end function
WScript.Echo max(100)
WScript.Echo max(array(200, 300, 100))class xxx
dim a, b ,c
function x()
x = a & b & c
end function
end class
set x=new xxx
x.a=1
x.b=2
msgbox x.x()
x.c=3
msgbox x.x()Пара функций была изначально задумана для отдельного использования (вызываются кнопками в HTA) и результат своей работы они выводили диалоговыми окнами, сейчас я возвращаемый ими результат использую еще и из процедуры, в ходе которой наличие диалогов уже нежелательно.
Разделяйте логику программы (подпрограммы) от интерфейса. Задача вычисляющей подпрограммы выполнять только вычисления. Вывод диалоговых окон - не ее забота. Перепишите функции так, чтобы они выполняли только необходимые действия. Взаимодействие с пользователем вынесите наружу, за пределы Ваших функций.
Спасибо за рекомендации и примеры с массивами и классами!
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться