Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: alexenin on March 07, 2016, 02:48:44 AM

Title: INC($var,1) ругается на $var, если оно из INIREAD()
Post by: alexenin on March 07, 2016, 02:48:44 AM
config.ini:
Code: [Select]
[default]
param1=1
Если написать
Code: (clickermann) [Select]
$var = INIREAD("config.ini", "param1")
INC($var)
то выдаст ошибку, т.к. $var вернулось не числом, а строкой

Пока решение
Code: (clickermann) [Select]
$var = INIREAD("config.ini", "param1") + 0, но на это будут натыкаться.
Title: Re: INC($var,1) ругается на $var, если оно из INIREAD()
Post by: Oraven on March 07, 2016, 07:25:38 AM
Правильное решение использовать INT
Code: (clickermann) [Select]
$var = INT(INIREAD("config.ini", "param1"))
INC($var)
Title: Re: INC($var,1) ругается на $var, если оно из INIREAD()
Post by: alexenin on March 10, 2016, 02:11:04 AM
В параметре пришло число, а не строка, и при вызове INC($var) не должно происходить ошибки, это было ключевым моментом.
А вы опять предлагаете как обходить ошибку, так не правильно относится к сообщениям.

П.С. $var = INT(INIREAD("config.ini", "param1")) нельзя использовать, т.к. бывают не только целые числа.
Title: Re: INC($var,1) ругается на $var, если оно из INIREAD()
Post by: Кликермен on March 10, 2016, 07:25:18 AM
Quote
т.к. бывают не только целые числа.
то есть бывают дроби? или текст?  добавь проверку на текст/дробь.

Людеи обзывать некрасиво!  программа не рассчитана для продвинутых - принимает любые типы данных, здесь нет строгого разграничения -текст, числовые, с плавающеи точкои..и дальнеишие конвертацции
Title: Re: INC($var,1) ругается на $var, если оно из INIREAD()
Post by: alexenin on March 10, 2016, 09:16:01 AM
да 1.5 это не целое число, при этом нельзя применять функцию INT
в программировании оно считается действительным, а в математике дробным.

....
Title: Re: INC($var,1) ругается на $var, если оно из INIREAD()
Post by: Vint on March 10, 2016, 10:10:25 AM
Зачем сразу говорить что это ошибка? Все функции работающие с файлами в кликере возвращают строки.  Так задумано изначально.
И INIREAD и TFREAD и даже в начале TFREADARR так делал (потом его специально изменили).
Читаем строки, т.к. в текстовом файле - всё строки. И неизвестно нужно переводить тебе в число или нет. Если делать автоматическое определение, как быть тем кому это не нужно?
Знаешь какая беда когда начинают вычисляться строки вида "2012 - 2016" или "4/5"... и главное потом ничего уже не поправить ROUND, INT или  + 0.
Title: Re: INC($var,1) ругается на $var, если оно из INIREAD()
Post by: alexenin on March 10, 2016, 11:13:06 AM
я говорил про ошибку в INC(), эта функция может ведь включить проверку?
Title: Re: INC($var,1) ругается на $var, если оно из INIREAD()
Post by: alexenin on March 10, 2016, 11:23:04 AM
Знаешь какая беда когда начинают вычисляться строки вида "2012 - 2016" или "4/5"... и главное потом ничего уже не поправить ROUND, INT или  + 0.
Речь шла про числа, а то что вы написали называется выражением. Хотите еще дальше увести тему от сути?
Title: Re: INC($var,1) ругается на $var, если оно из INIREAD()
Post by: Кликермен on March 10, 2016, 11:23:41 AM
if (int($chislo)!$chislo)
//сюда впиши поиск позиции точки, затем через strconcat собери число дробное свое
else
(int($chislo)
end_if
Title: Re: INC($var,1) ругается на $var, если оно из INIREAD()
Post by: Кликермен on March 10, 2016, 11:27:31 AM
я говорил про ошибку в INC(), эта функция может ведь включить проверку?
эта функция просто уменьшает/увеличивает переменную на заданныи шаг. все! больше она ничего не проверяет, не считает )
Title: Re: INC($var,1) ругается на $var, если оно из INIREAD()
Post by: alexenin on March 10, 2016, 11:33:09 AM
Кликермен, вы пишите не в тему.
Title: Re: INC($var,1) ругается на $var, если оно из INIREAD()
Post by: alexenin on March 10, 2016, 11:43:23 AM
Хорошо, еще раз начнем
config.ini:
Code: [Select]
[default]
param1=1
Если написать
Code: (clickermann) [Select]
$var = INC(INIREAD("config.ini", "param1"))выдаст ошибку, а ее не должно быть

Так вроде короче и нагляднее.
Title: Re: INC($var,1) ругается на $var, если оно из INIREAD()
Post by: Vint on March 10, 2016, 01:01:48 PM
я говорил про ошибку в INC(), эта функция может ведь включить проверку?

Может, но не хочет. Как и при использовании сразу в параметрах цикла FOR
Code: (clickermann) [Select]
$var = INIREAD("config.ini", "param1")
FOR($i=0, $i < $var)
LOGWRITE ($i)
END_CYC

Может ещё где. Пусть INC занимается увеличением значения переменной. Мухи отдельно, котлеты отдельно.
Из-за чего весь сыр-бор? Я вот INC не очень люблю, использую редко и там где точно знаю что к чему.
Не проще ли наращивать простым сложением
Code: (clickermann) [Select]
$var = INIREAD("config.ini", "param1")
$var = $var + 1

Сразу "стоп". Я не говорю что ошибки не нужно исправлять. Нужно. Надеюсь, ты не думаешь, что проблема с числа-строки только в INC? Там их вагон и тележка. И уж перевести строку в число при чтении из файла не самое худшее на что ты можешь натолкнуться. Тут хотя бы есть решения.
От автора зависят все исправления.
Title: Re: INC($var,1) ругается на $var, если оно из INIREAD()
Post by: alexenin on March 10, 2016, 03:11:33 PM
Могу сказать только, спасибо, что услышали.

Дело как раз в новичках, которые будут на этом спотыкаться, опытные поймут и обойдут.
Я посчитал это багом, т.к. в программу заложена всеядность к значению переменной, для облегчения программирования.