vbscript - Recursive Function return value in vb script -
please see below function fnwaitcheckfinalstatus if else part executed in below code value return function fnwaitcheckfinalstatus coming blank because function called recursively fnwaitcheckfinalstatus.
is there way return value of fnwaitcheckfinalstatus after exit function function should exit state.
how can make possible , pointers on this.
function fnwaitcheckfinalstatus(objstatusbar) dim blnretvalue : blnretvalue = true dim : i=0 if objstatusbar.exist strvalue=objstatusbar.getroproperty("text") wait 10 strvalue=objstatusbar.getroproperty("text") loop while strvalue = "task started" end if strvalue1=objstatusbar.getroproperty("text") if strvalue1="task executed successfully" blnretvalue1=true fnwaitcheckfinalstatus = blnretvalue1 exit function elseif strvalue1="task execution failed" blnretvalue1=false fnwaitcheckfinalstatus = blnretvalue1 exit function else call fnwaitcheckfinalstatus(objstatusbar) end if end function
consider "pass-through"ing function result if return recursion, in code (note line !!! comment):
function fnwaitcheckfinalstatus(objstatusbar) dim : i=0 if objstatusbar.exist strvalue=objstatusbar.getroproperty("text") wait 10 strvalue=objstatusbar.getroproperty("text") loop while strvalue = "task started" end if strvalue1=objstatusbar.getroproperty("text") if strvalue1="task executed successfully" fnwaitcheckfinalstatus = true elseif strvalue1="task execution failed" fnwaitcheckfinalstatus = false else fnwaitcheckfinalstatus=fnwaitcheckfinalstatus(objstatusbar) ' !!! end if end function also, eliminated result buffer variable. don´t need it, can scratch it.
also, i'd avoid exit function in case keep code simpler (one entry point, 1 exit point), eliminated that, too.
generally speaking, there no obvious reason using recursion here since pass same argument receive, recursive call same caller scope. use loop instead.
Comments
Post a Comment