Author Topic: Почему в лог выдаются нули?  (Read 1459 times)

0 Members and 1 Guest are viewing this topic.

Dreight

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Почему в лог выдаются нули?
« on: March 08, 2018, 07:08:33 AM »
Люди добрые, помогите пожалуйста.

Вот такой код у меня:
Code: (clickermann) [Select]
define($a,iniread("kolkar.ini","stroka1"))
$key1=0
for($b=0, $b < $a)
$g[$b]=0
end_cyc
GETSCREEN
for($b=0, $b < $a)
   if_picture_in(613,273, 623,283,strconcat("screens/image",$b,".bmp"),-1,100)
      define($var,iniread("vremkar.ini", strconcat("stroka",$b))
      if($var!=0)
      $g[$b]=$var
      END_IF
      print($g[$b])
      $key1=1
      if($g[$b]=0)
         $d=$_time_h*60*60
         $e=$_time_m*60
         $f=$_time_s
         $g[$b]=$d+$e+$f
         INIWRITE("vremkar.ini", strconcat("stroka",$b), $g[$b])
         define($var2,iniread("vremkar.ini", strconcat("stroka",$b))
         print($var2)
      END_IF
   END_IF
end_cyc
BEEP(800,200)
wait(5)

В kolkar у меня лежит 1, в vremkar 0. Как пример у меня в лог выдаёт:
5:40:31 0
5:40:31 20431
5:40:36 0
5:40:36 20431
5:40:41 0
5:40:41 20431 .

И я никак не могу понять почему выдаёт нули. Ну первый ноль должен быть, но потом то почему идут нули? Я же приравниваю $g[$b] к $var, а $var во время второго выполнения цикла равняется 20431.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Почему в лог выдаются нули?
« Reply #1 on: March 08, 2018, 07:55:59 AM »
Ты в курсе что define присваивает значение переменной только если её еще не существует?

Dreight

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Re: Почему в лог выдаются нули?
« Reply #2 on: March 08, 2018, 08:21:16 AM »
Ты в курсе что define присваивает значение переменной только если её еще не существует?

Нет, я был не в курсе. Спасибо большое что нашёл в чём проблема :) Получается, когда код начинается сначала, то строка #9 с define не выполняется потому что переменная var уже создана, верно?
Если так, то как это исправить? Может есть какая-то похожая команда на define, но которая будет ещё и перезаписывать значение переменной? Ну или что угодно что поможет по несколько раз приравнивать переменную значению из внешнего файла.
« Last Edit: March 08, 2018, 08:34:56 AM by Dreight »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Почему в лог выдаются нули?
« Reply #3 on: March 08, 2018, 08:53:01 AM »
Code: (clickermann) [Select]
$var = iniread("vremkar.ini", strconcat("stroka",$b))
А еще хорошо бы принудительно перевести строку в число функцией INT, потому что iniread выдает именно строки, и кликер может не верно интерпретировать число это или строка, например при сравнении.
Code: (clickermann) [Select]
$var = INT(iniread("vremkar.ini", strconcat("stroka",$b)))

Dreight

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Re: Почему в лог выдаются нули?
« Reply #4 on: March 09, 2018, 08:51:08 AM »
Спасибо большое ещё раз :)