Author Topic: Строковые масивы с разделителем  (Read 4841 times)

0 Members and 1 Guest are viewing this topic.

Дядя_Витя

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Строковые масивы с разделителем
« on: April 07, 2017, 11:37:30 PM »
Помогите разобратся вот в чом. Задача. Есть строковой масив. $val="213,234,12,233,152,43" где запятая выполняет функцию разделителя. Поскажите как теперь превратить эту строку в
Val(1)=213
Val(2)=234
И.т.д.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Строковые масивы с разделителем
« Reply #1 on: April 07, 2017, 11:54:02 PM »
Справка, строки и файлы:

STRSEPARATE


Синтаксис:
STRSEPARATE ("str", "substr", $arr) - разбивает строку на подстроки, которые помещаются в массив

Параметры:
str - входная строка
substr - строка-разделитель
$arr - выходной массив

Пример:
Code: (clickermann) [Select]
$val="213,234,12,233,152,43"
strseparate($val, ",", $arr)

FOR($i=0,$i<ARRSIZE ($arr)) 
   print($arr[$i])
END_CYC

halt

Дядя_Витя

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: Строковые масивы с разделителем
« Reply #2 on: April 07, 2017, 11:56:42 PM »
Огромное спасибо.

Дядя_Витя

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: Строковые масивы с разделителем
« Reply #3 on: April 09, 2017, 12:00:14 PM »
Спасибо за подсказку. Вобщемто все хорошо работает. Но возникла проблема в другом. И я не пойму что не так. Почему не идет по метке а продолжает выполнение скрипта после if
Code: (clickermann) [Select]
//==x,y 5,213 size 786x548 ==
//==Kordinat hand==

$val="214,280,210,287,313,187,312,190,263,260,449,240,403,192,403,192,415,190,467,238,520,193,518,186"
//==Kordinat move==

$val_move="214,242,214,370,315,169,310,405,310,235,600,244,380,246,495,262,689,266,419,259,514,244,515,121"

strseparate($val,",",$arr)
for($i=0,$i<arrsize($arr))
end_cyc
strseparate($val_move,",",$arr_move)
for($i=0,$i<arrsize($arr_move))
end_cyc
skip:go
$cyc=0

 for($cyc=1, $cyc<9)
for($x=0,$x<23,2)
$y=$x+1
lclick($arr_move[$x],$arr_move[$y])
wait(3)
lclick($arr[$x],$arr[$y])
wait(9)
keypress(#Enter)
wait(1)
end_cyc
//==Sell==
if($cyc>1)
lclick(177,72)
 wait(8)
lclick(257,182)
 wait(5)
  keypress(#Enter)
wait(3)
keypress(#right)
waitms(500)
keypress(#down)
waitms(500)
  keypress(#down)
  waitms(500)
for($n=0, $n<24)
keypress(#F2)
waitms(500)
end_cyc
keypress(#F1)
waitms(250)
lclick(21,373)
goto(go)
else
end_if
//=============================================

LCLICK(58,229)
WAIT(5)
LCLICK(136,108)
 WAIT(5)
 LCLICK(215,288)
 wait(5)
 LCLICK(214,300)
wait(100)

end_cyc

Дядя_Витя

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: Строковые масивы с разделителем
« Reply #4 on: April 09, 2017, 12:15:08 PM »
Чорт возьми))) Я наивно полагал что скип это команда)) Спасибо

Дядя_Витя

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: Строковые масивы с разделителем
« Reply #5 on: April 09, 2017, 12:25:04 PM »
Это временные сроки. Чтото вроди трасировки на случий какихто не совпадений, чтобы выводить в лог список переменных в массиве)

Дядя_Витя

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: Строковые масивы с разделителем
« Reply #6 on: April 09, 2017, 12:26:43 PM »
А что если внутри условия закрыть общий цикл end_cyc? И уже потом выходить по метке?

Дядя_Витя

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: Строковые масивы с разделителем
« Reply #7 on: April 09, 2017, 12:29:15 PM »
Code: (clickermann) [Select]
if($cyc>1)
lclick(177,72)
 wait(8)
lclick(257,182)
 wait(5)
  keypress(#Enter)
wait(3)
keypress(#right)
waitms(500)
keypress(#down)
waitms(500)
  keypress(#down)
  waitms(500)
for($n=0, $n<24)
keypress(#F2)
waitms(500)
end_cyc
keypress(#F1)
waitms(250)
lclick(21,373)
goto(go)
else
end_if
примерно так.
?

Дядя_Витя

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: Строковые масивы с разделителем
« Reply #8 on: April 09, 2017, 12:45:56 PM »
Но приэтом меня волнует вопрос. Когда мы уходим по метке, общий цикл остается открытым. И будетли от коректно выполнятся при следующем входе в него. Или может дать сбой в последующих итерациях)

Дядя_Витя

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: Строковые масивы с разделителем
« Reply #9 on: April 09, 2017, 12:49:40 PM »
примерно, как я написал выше из условий по метке переходить можно.
Code: (clickermann) [Select]
$val="214,280,210,287,313,187,312,190,263,260,449,240,403,192,403,192,415,190,467,238,520,193,518,186"
//==Kordinat move==

$val_move="214,242,214,370,315,169,310,405,310,235,600,244,380,246,495,262,689,266,419,259,514,244,515,121"
 for($x=0,$x<23,2)
      $y=$x+1
      lclick($arr_move[$x],$arr_move[$y])
      wait(3)
      lclick($arr[$x],$arr[$y])
      wait(9)
      keypress(#Enter)
      wait(1)
   end_cyc
Чем так сложно и долго задавать координаты кликов, можно быстро записать свои действия и вставить записанный скрипт в основной.
Оптимизация) Хорошие манеры требуют сокращать код) Записывая последывательность попроще размер кода увеличется в разы) Также это как правело сильно ухудшает читабельность)

Дядя_Витя

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: Строковые масивы с разделителем
« Reply #10 on: April 09, 2017, 12:56:41 PM »
Логично ;)