Автокликер Clickermann :: Форум
		Основной раздел => Ошибки => Topic started by: Cleoss on December 30, 2017, 09:09:54 AM
		
			
			- 
				Привет, енотег Джо!
 
 В одном моём скрипте (http://crapware.aidf.org/forum/index.php?topic=3700.0) есть такие строки:
 $dt=strconcat($_date_d,".",$_date_m,".",$_date_y)
 //$dte=$_date_str
 $dte=inputbox("Plz input a date below! (dd.mm.yyyy) ",$dt,60)
 //wait(1)
 if($dte=0)
 $dte=strconcat($_date_d,".",$_date_m,".",$_date_y)
 end_if
Причём что интересно, что в текущей версии кликера .007 условие ложно срабатывает? хотя не должно, поскольку величина после ввода в инпутбокс явно не равна 0, а условие всё равно срабатывает и тем самым портит дальнейшую логику скрипта (меняет дату с введённой на текущую). Придётся закомментить блок и остаться без альтернативной версии кода для кликеров без поддержки переменной $_date_str. Ещё интересно, по чьей же вине это? По вине инпута или ифа? Или получается, парсер кликера заранее предобрабатывает переменные скрипта без учёта изменений в инпуте?
 
 И да, вчера новёхонькая версия преподнесла ещё сёрпрайз, надо б забагтречить его в новой теме но лень. Долго ли, коротко ли  набирал скрипт, набирал, отошёл. Вернулся, запустил скрипт заново. И вдруг.. Он не запускается, нету даже звука запуска. Думаю перезапуститься, сохраняюсь (!!!) и закрываю редактор, выскакивает бесконечное предложение сохранить работу (но не сохраняет -- знакомая схема). Попа чувствует неладное, но молчит. Запускаю кликер снова, открываю скрипт, над которым работал, а он пустой, ноль байт. А теперь внимание вопрос: КУДА девался бекап?
 
 ЗЫ. Порыскал по всем подпапкам кликера (надеялся, работа не насмарку), бекапа не нашёл, а раньше был же. Щас версия 007.
- 
				У меня 4.13.007 вообще выдает ошибку в условии. Оно и понятно, ты ведь пытаешься сравнить строку с числом. Хотя по идее ошибку выдавать не должно. 
 
 Вообще не понятно причем тут 0. Пустую строку можно определить таким образом
 $dt=$_date_str
 $dte=inputbox("Plz input a date below! (dd.mm.yyyy) ",$dt,60)
 if($dte="")
 LOGWRITE ("Сработало")
 $dte=$_date_str
 end_if
 
 LOGWRITE ($dte)
 
 HALT
- 
				У меня 4.13.007 вообще выдает ошибку в условии. Оно и понятно, ты ведь пытаешься сравнить строку с числом. Хотя по идее ошибку выдавать не должно. 
 
 Вообще не понятно причем тут 0. Пустую строку можно определить таким образом
 
 
 
 Посмотрел, и оказывается, у меня стоит подавление ошибок, но то ладно. Оно мне щас пригодится для отладки.  8)
 
 А вот с нулём имхо всё понятно. Если кликер старый, то переменная $_date_str вернёт ноль, и если переменная $dte будет не задана, то тоже вернёт ноль. Поэтому и сравниваем с нулём переменную, которая по иронии оказывается текстовой. Ну а что ж это за иф такой, если он не может выполнить своё предназначение и сообщить, верно ли условие. Его дело простое, если равно -- скажи "да", не равно -- скажи "нет", здесь не надо подробностей про то почему не равно или почему равно и прочей философии. Просто "да" или "нет".
 
 А зачем в таком контексте сравнивать переменную с ""? Она же пустой строкой всё равно не станет. И кстати, Андрей, там случайно в кликере не завалялось старых функций для приведения типов? Спасибо за ответ!
- 
				
 да, действительно, у меня пока версия 13.006, в условиях не работает сравнение чисел со строками, выдает ошибку.
 
 //ошибка
 if(1="text")//если сменить сравнение числа с числом или наоборот, то ошибки нет
 print("стаботало")
 end_if
 haltt
 ранее, чтобы отличить текст от строк, использовал вот такое действо - http://crapware.aidf.org/forum/index.php?topic=1724.msg9797#msg9797
 
 обязательно нужно исправлять!!!
- 
				Ну а что ж это за иф такой, если он не может выполнить своё предназначение и сообщить, верно ли условие. Его дело простое, если равно -- скажи "да", не равно -- скажи "нет", здесь не надо подробностей про то почему не равно или почему равно и прочей философии. Просто "да" или "нет".
 
 Да вы, батенька, идеалист  :)
 Тут писатели языков постоянно компромиссы ищут, что делать при сравнении разных типов. И при явном и при неявном.
 В языках со строгой типизацией обычно даже сравнивать нельзя. Просто тупо не дают выбрасывая ошибку. В других... везде по разному.
 Вон в Яваскрипт тоже п. творится. Там бы пришлось писать много разгневанных постов. Слава богу я в такое болото не лезу.
- 
				Оно и понятно, ты ведь пытаешься сравнить строку с числом.
 
 Вообще не понятно причем тут 0.
 
 Если в окно inputbox вводится число, то его вполне корректно можно сравнивать с числами с помощью различных условий, несмотря на то, что данная функция строковая. Проверено не раз. А проверку на пустую строку можно осуществить также с помощью if(strlen($var)>0), если условие верно, значит строка не пустая.