Запуск Ui агента из скрипта...

  • Автор темы Автор темы fedotxxl
  • Дата начала Дата начала
Еще добавлю, если кто не в курсе, что Execute, т.к. он исполняется в области видимости модуля, а не вызывающей процедуры, имеет доступ к переменным и функциям модуля, но не имеет доступа к локальным для вызывающей функции переменным!
Т.е. если вы хотите, чтобы Execute вернул какой-то результат, необходимо на уровне модуля (в "(Declarations)") объявить переменную, и в тексте Execute записать в нее результат, а потом прочитать ее значение из вызывающей Execute функции.

т.е.

Код:
(Declarations)
private someText as string

Sub Initialize
On Error Goto errh

Dim execStr As String

execStr = |
sub TestSub()
on error goto errh
dim i as Integer
dim r as Double

'!!!!!!!!!!! вот тут мы глобальной переменной задали значение, которое вернула функция из нашего модуля !!!!!!!!!!

someText = SomeFunc()

'!!!!!!!!!!!!

i = i + 5
r = i/0
eos:
Exit Sub
errh:
Messagebox Error & " (" & Cstr(Erl) & ")"
Resume eos
end sub

call TestSub()
|

Execute(execStr)

eos:
Exit Sub

errh:
Messagebox Error & " (" & Cstr(Erl) & ")"
Resume eos
End Sub


function SomeFunc() as string
SomeFunc = "This is SomeFunc!"
end function

еще замечу, что под модулем подразумевается любой объект, который имеет свою область объявлений ("(Declarations)"), т.е. это библиотеки, агенты, формы и т.п.
 
Т.е. если вы хотите, чтобы Execute вернул какой-то результат, необходимо на уровне модуля (в "(Declarations)") объявить переменную, и в тексте Execute записать в нее результат, а потом прочитать ее значение из вызывающей Execute функции.
не только, есть вариант с End XXX
где XXX возвращаеммый Execute результат

https://codeby.net/threads/16719.html
 
как вариант, но, к сожалению, он подходит только для простого случая (код результата) и только integer...
если что-то сложнее или иного типа, придется раскошелиться на глобальную переменную...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!