UBound дает вам РАЗМЕР массива, а НЕ текущее количество элементов массива!
Мое решение хорошо работает со строковыми и числовыми массивами
Func _UBound($a)
local $i
For $i=UBound($a) - 1 to 0 Step -1
If StringLen($a[$i])> 0 Then ExitLoop
Next
Return $i
EndFunc
Вы можете попробовать это. _Ubound ($ array) дает индекс последнего элемента в массиве
Global $array[10]
$array[0] = "434"
$array[1] = "value2"
$array[2] = 0
$array[3] = "hjhhhkhk"
$array[4] = 0x0000
$array[5] = ""
$array[6] = 01010101
MsgBox(0,Default,"Finally it is: " & _UBound($array))