Что нового

помогите разобраться с @error

saraconor

Новичок
Сообщения
387
Репутация
3
Код:
_arr()
_cigle()

func _cigle()
$N = 1
while $N = 1
ToolTip("цикл")
sleep(200)
wend
EndFunc

func _arr()
$N = "go la ma go"
$N = StringSplit($N," ")
for $b = 1 to ubound($N)
if @error then MsgBox(0, '', "zo")
MsgBox(0, '', $N[$b])
next


Первая функция ведет к ошибке, как с помощью @error не допустить сворачивания скрипта, а сразу перейти ко второй функции с циклом?
 

hedji

Продвинутый
Сообщения
409
Репутация
92
Ошибки исправил, но что вы пытались сделать так и не понял.
Код:
_arr()
_cigle()

func _cigle()
$N = 1
while $N = 1 ;уходим в бесконечный цикл, возврат из которого не предусмотрен
ToolTip("цикл")
sleep(200)
wend
EndFunc

func _arr()
$N = "go la ma go"
$N = StringSplit($N," ")
for $b = 1 to ubound($N)
if @error then MsgBox(0, '', "zo")
MsgBox(0, '', $N[$b-1]) ;нумерация массивов идет с 0, поэтому последний элемент массива это ubound($N)-1
next
EndFunc ;забыли указать EndFunc отсюда ошибка
 

joiner

Модератор
Локальный модератор
Сообщения
3,422
Репутация
597
saraconor
код, как бы, не логичен.
от себя дополню
Код:
Func _arr()
	$N = "go la ma go"
	$N = StringSplit($N, " ")
	For $b = 1 To $N[0]
		MsgBox(0, '', $N[$b]) 
	Next
EndFunc

строка
Код:
If @error Then MsgBox(0, '', "zo")

бессмыслена, ибо макрос ошибки регистрирует ошибку предыдущей функции. в цикле кроме MSG ничего нет. не стесняйся обращаться к справке. ты не совсем понял что делает Ubound и в каких случаях эта функция нужна. ну и StringSplit.
еще важный момент. переменная $N используется в обеих функциях. объявляй переменные локальными или глобальными. иначе скрипт будет "неожиданно" выдавать ошибку
 
Автор
S

saraconor

Новичок
Сообщения
387
Репутация
3
hedji сказал(а):
Ошибки исправил, но что вы пытались сделать так и не понял.

Пытаюсь сделать так чтобы скрипт даже с ошибкой продолжал работать, просто перепрыгнув ошибочный сегмент.
 
Верх