2

怎么可能绕过 DM 中不存在的功能,以使主代码仍然运行?尝试/捕获似乎不起作用,例如

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)

提前致谢!

4

2 回答 2

0

由于脚本解释器捕获了“未知”命令,因此没有简单的方法可以做到这一点。但是,您可以使用ExecuteScriptCommand().

在这本电子书中可以找到一个示例教程,但简而言之,您需要执行以下操作:

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 )
}

如果您的任务只是“验证”脚本是否可以运行,这对于简单的命令非常有效且容易。

当您需要传递参数时,它变得笨拙。但即便如此,也有办法做到这一点。(“外部”脚本可以创建一个对象并传递每个字符串的对象 ID。类似地,“内部”脚本可以执行相同操作并将脚本对象 ID 作为退出值返回。)

doesfunctionexist注意:当然,如果您只想进行“安全测试”,但实际上不想执行命令,您当然也可以将其放入测试脚本中。

于 2017-01-13T17:38:41.953 回答
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 move-)在不同的机器上需要不同的命令。

于 2017-01-14T15:45:23.310 回答