Page 1 of 1
Сказка работы скриптового модуля...
Posted: 2008-01-06 15:47:45
by Grin
Code: Select all
sub fun_false()
uo.print("fun_false")
return 0
end sub
sub fun_true()
uo.print("fun_true")
return 1
end sub
sub test()
uo.print("while false and true")
while fun_false() and fun_true()
uo.print("Yes")
wend
uo.print("while true and false")
while fun_false() and fun_true()
uo.print("Yes")
wend
uo.print("while false and false")
while fun_false() and fun_false()
uo.print("Yes")
wend
end sub
Предлагаю проанализировать выше предложеный скрипт;) Ваши мысли?;)
Posted: 2008-01-06 16:21:54
by Destruction
Моя мысль, что если хоть один из циклов вдруг заработает, то его никто не остановит..
Проверить не на чем, хоть сказал бы, какой результат от выполнения такого скрипта..
Posted: 2008-01-06 16:28:10
by Grin
проблема в обработки условий. а именно что сначала вы полняется все что на писано в условии а потом только идет проверка на результат. тоесть если будет конструкция
Code: Select all
while (j < len(subStr)) and (Source[i+j] == subStr[j])
j = j+1
wend
то мы волей не волей создаем условие выхода за границу массаива subStr, так как будет отработано subStr[len(subStr)]. Ничего хорошего в общем... В трезвых компилятора такая ситуация не возможна.
Posted: 2008-01-07 02:15:15
by Mihail
имхо проблема не столько компилятора, сколько языка..
инжектовский бейсик высокоуровневый язык как-никак поэтому и допускает вообще существование таких страшных конструкций...
Posted: 2008-01-07 09:13:35
by Grin
Причем тут это???? Тут нарушена логика выполнения дерева в логических операторах!