我有一个小的dxl脚本,我需要从大小为20的数组中返回分配的位置数,例如,其中仅分配了10个位置。
我尝试使用noError()和lastError()函数,但是在调用lastError()之后,脚本被暂停并且无法继续执行。 这是我的代码:
int returnArrayLength(string array[]){
int lengthOfArray = 0,i = 0;
for (i=0; i < sizeof array ; i++){
noError()
if (!null array[i]){
lengthOfArray++
print lengthOfArray
}
if (!null lastError()){
print "Exception caught!" // not printed
break
}
}
return lengthOfArray
}
string labels[6]
labels[0] = "label0"
labels[1] = "label1"
labels[2] = "label2"
labels[3] = "label3"
print returnArrayLength(labels) // not printed
上面的代码显示以下内容: 1个 2 3 4
在调用lastError()函数后,如何恢复执行?
答案 0 :(得分:1)
这比我想象的要难!
因此,事实证明,未分配的元素错误完全停止了DXL程序。那我们该怎么办?
好吧,我们需要在自己的环境中运行一段代码,并在需要时使其崩溃!
为此,我们需要创建一个eval_,将其传递给我们的数组,然后使其具有return_(如果eval_失败则不会执行)
看看:
int returnArrayLength(string array[]){
int lengthOfArray = 0,i = 0;
for (i=0; i < sizeof array ; i++){
string scode = "noError()
string ( &passedAr)[] = (addr_ "( ( addr_ array ) int ) ")
string s = passedAr["i"]
lastError()
return_ \"Y\""
if ( ( eval_ scode ) == "Y" ){
lengthOfArray++
print lengthOfArray
} else {
print "Exception caught!" "\n"
break
}
}
return lengthOfArray
}
string labels[6]
labels[0] = "label0"
labels[1] = "label1"
labels[2] = "label2"
labels[3] = "label3"
print returnArrayLength(labels)
多么奇妙的小问题。
我用来帮助解决此问题的资源:
How to pass an array into an eval_
eval_ , addr_ , and memory leaks
Testing for unassigned variables-由于数组的性质,这一方法不能完全起作用,至少据我所知!
无论如何,感谢您的挑战!