如何绕过DM中不存在的功能 这样主代码仍会运行?尝试/捕获似乎不起作用,e..g
image doSomething(number a,number b)
{
try
{
whateverfunction(a,b)
}
catch
{
continue
}
}
number a,b
doSomething(a,b)
同样条件不会起作用,例如..
image doSomething(number a,number b)
{
if(doesfunctionexist("whateverfunction"))
{
whateverfunction(a,b)
}
}
number a,b
doSomething(a,b)
提前感谢!
答案 0 :(得分:0)
由于“未知”命令被脚本解释器捕获,因此没有简单的方法可以做到这一点。但是,您可以使用ExecuteScriptCommand()
构建变通方法。
在e-book中有一个示例教程,但简而言之,您希望执行以下操作:
String scriptCallStr = "beep();\n"
scriptCallStr = "MyUnsaveFunctionCall();\n"
number exitVal
Try { exitVal = ExecuteScriptString(scriptCallStr ); }
Catch { exitVal = -1; break; }
if ( -1 == exitVal )
{
OKDialog("Sorry, couldn't do:\n" + scriptCallStr )
}
else
{
OKDialog( "All worked. Exit value: " + exitVal )
}
对于简单的命令,如果您的任务只是“验证”脚本可以运行,那么它的工作非常简单。
当你需要传递参数时,它会变得笨拙。但即使这样,也有办法这样做。 ('outer'脚本可以创建一个对象并传递每个字符串的对象ID。同样,'inner'脚本可以执行相同的操作并将脚本对象ID作为exit-value返回。)
注意:您当然也可以将doesfunctionexist
放在测试脚本中,如果您只想进行“安全测试”,但实际上并不想执行该命令。
答案 1 :(得分:0)
根据您的需要,可能还有另一种解决方案:库中的包装函数。如果你想在不同的PC上运行相同的脚本,其中一些具有功能 - 很可能是一些显微镜 - 而其他人没有,那么这可能很有用。 您可以使主脚本使用包装器方法,然后将不同版本的包装器方法脚本脚本安装为库。
void My_SpecialFunction( )
{
SpecialFunction() // use this line on PCs which have the SpecialFunction()
DoNothing() // use alternative line on PCs which don't have the SpecialFunction()
}
My_SpecialFunction( )
我过去曾经使用过这个功能(-stage movement-)在不同的机器上需要不同的命令。