Это было сложнее, чем я думал, что будет!
Итак, как оказалось, ошибка неназначенного элемента полностью останавливает программу 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)
Какая фантастическая маленькая проблема.
Ресурсы, которые я использовал для решения этой проблемы:
Как передать массив в eval_
eval_, addr_ и утечки памяти
Тестирование на неназначенные переменные - Это не совсем работает из-за природы массивов, по крайней мере, насколько я могу судить!
В любом случае, спасибо за вызов!