Автокликер Clickermann :: Форум
Основной раздел => Ошибки => Topic started by: Dimava on November 15, 2020, 05:14:06 PM
-
print("Hello, world!")
FOR($a=0,$a<50)
$c = char($a)
$v = $c ! $c
if (strlen($v) ! 1)
print("[",$a,"] ",strlen($v)," '",$c,"' ",$v)
end_if
END_CYC
halt
Очевидно, данная программа должна выводить ничего (она сравнивает символ с самим собой, и проверяет что получился 0)
Однако она выводит
16:57:46 Hello, world!
16:57:46 [34] 7 '"' """!"""
16:57:46 [35] 5 '#' "0!"0
16:57:46 [39] 7 ''' "'"!"'"
Скорее всего это связано с тем, что перед eval-ом строки кода текст не escape-ится
-
Сравнение строк не работает для строк, содержащих # " '
Не совсем понятно, что подразумевает фраза "Сравнение строк". Например с точки зрения коммунистической пропаганды в СССР - слово "Ленин" приравнивается к слову "Партия".
Строки "123" и "abc", тоже равны, только по длине.
Всё работает, если знать как сравнивать. Обычно делали так:
$str_1 = CHAR(34) // "
$str_2 = CHAR(35) // #
IF(STRMD5($str_1) = STRMD5($str_2))
LOGWRITE ("Равны")
ELSE
LOGWRITE ("Не равны")
END_IF
HALT
В логе:
19:17:56 Не равны