09-05-2018 02:28 AM
Hello,
I have a main script importing two scripts and running their main function in a for loop. I have several problems with that
Call ScriptInclude("ScriptA.VBS")
Call ScriptInclude("ScriptB.VBS")
For i = 1 To Data.Root.ChannelGroups.Count
Call analysisA(True)
Call analysisB(True)
Next
I believe I need the ScriptInclude function, because I want to send a parameter to the analysis function. When doing imports like this, however, everything is imported from the scripts. I have a cleanup() function in both of them with a slightly different functionality and ScriptInclude causes, that even in the analysisA function call the cleanup from the ScriptB gets called, which causes an error.
Coming from Python, I wish there was functionality like this:
from ScriptA.VBS import analysisA
from ScriptB.VBS import analysisB
analysisA() - now working correctly, because local cleanup function gets called
analysisB()
Or:
import ScriptA.VBS as ScriptA
import ScriptB.VBS as ScriptB
ScriptA.analysisA() - this way I don't even have to name analysisA and analysisB differently, just use analysis name
ScriptB.analysisB()
Or:
from ScriptA.VBS import analysis as analysisA - this way I don't have to name analysisA and analysisB differently
from ScriptB.VBS import analysis as analysisB
The current functionality is basically equivalent to:
from ScriptA.VBS import *
from ScriptB.VBS import *
which is discouraged, because it can cause problems I encountered in DiaDEM.
Solved! Go to Solution.
09-05-2018 03:08 AM
There is a scope
option explicit Call ScriptInclude("ScriptA.VBS", "A") Call ScriptInclude("ScriptB.VBS", "B") LogfileDel Call A.analysisA(True) Call B.analysisB(True)
which will call
A: analysis called A: Cleanup called B: analysis called B: Cleanup called
does this match your needs?