Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: alexenin on March 07, 2016, 02:48:44 AM
-
config.ini:
[default]
param1=1
Если написать
$var = INIREAD("config.ini", "param1")
INC($var)
то выдаст ошибку, т.к. $var вернулось не числом, а строкой
Пока решение $var = INIREAD("config.ini", "param1") + 0
, но на это будут натыкаться.
-
Правильное решение использовать INT
$var = INT(INIREAD("config.ini", "param1"))
INC($var)
-
В параметре пришло число, а не строка, и при вызове INC($var) не должно происходить ошибки, это было ключевым моментом.
А вы опять предлагаете как обходить ошибку, так не правильно относится к сообщениям.
П.С. $var = INT(INIREAD("config.ini", "param1")) нельзя использовать, т.к. бывают не только целые числа.
-
т.к. бывают не только целые числа.
то есть бывают дроби? или текст? добавь проверку на текст/дробь.
Людеи обзывать некрасиво! программа не рассчитана для продвинутых - принимает любые типы данных, здесь нет строгого разграничения -текст, числовые, с плавающеи точкои..и дальнеишие конвертацции
-
да 1.5 это не целое число, при этом нельзя применять функцию INT
в программировании оно считается действительным, а в математике дробным.
....
-
Зачем сразу говорить что это ошибка? Все функции работающие с файлами в кликере возвращают строки. Так задумано изначально.
И INIREAD и TFREAD и даже в начале TFREADARR так делал (потом его специально изменили).
Читаем строки, т.к. в текстовом файле - всё строки. И неизвестно нужно переводить тебе в число или нет. Если делать автоматическое определение, как быть тем кому это не нужно?
Знаешь какая беда когда начинают вычисляться строки вида "2012 - 2016" или "4/5"... и главное потом ничего уже не поправить ROUND, INT или + 0.
-
я говорил про ошибку в INC(), эта функция может ведь включить проверку?
-
Знаешь какая беда когда начинают вычисляться строки вида "2012 - 2016" или "4/5"... и главное потом ничего уже не поправить ROUND, INT или + 0.
Речь шла про числа, а то что вы написали называется выражением. Хотите еще дальше увести тему от сути?
-
if (int($chislo)!$chislo)
//сюда впиши поиск позиции точки, затем через strconcat собери число дробное свое
else
(int($chislo)
end_if
-
я говорил про ошибку в INC(), эта функция может ведь включить проверку?
эта функция просто уменьшает/увеличивает переменную на заданныи шаг. все! больше она ничего не проверяет, не считает )
-
Кликермен, вы пишите не в тему.
-
Хорошо, еще раз начнем
config.ini:
[default]
param1=1
Если написать
$var = INC(INIREAD("config.ini", "param1"))
выдаст ошибку, а ее не должно быть
Так вроде короче и нагляднее.
-
я говорил про ошибку в INC(), эта функция может ведь включить проверку?
Может, но не хочет. Как и при использовании сразу в параметрах цикла FOR
$var = INIREAD("config.ini", "param1")
FOR($i=0, $i < $var)
LOGWRITE ($i)
END_CYC
Может ещё где. Пусть INC занимается увеличением значения переменной. Мухи отдельно, котлеты отдельно.
Из-за чего весь сыр-бор? Я вот INC не очень люблю, использую редко и там где точно знаю что к чему.
Не проще ли наращивать простым сложением
$var = INIREAD("config.ini", "param1")
$var = $var + 1
Сразу "стоп". Я не говорю что ошибки не нужно исправлять. Нужно. Надеюсь, ты не думаешь, что проблема с числа-строки только в INC? Там их вагон и тележка. И уж перевести строку в число при чтении из файла не самое худшее на что ты можешь натолкнуться. Тут хотя бы есть решения.
От автора зависят все исправления.
-
Могу сказать только, спасибо, что услышали.
Дело как раз в новичках, которые будут на этом спотыкаться, опытные поймут и обойдут.
Я посчитал это багом, т.к. в программу заложена всеядность к значению переменной, для облегчения программирования.