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

Основной раздел => Общие вопросы => Topic started by: Космич on February 16, 2019, 12:14:44 AM

Title: GETVAR и ARRSIZE
Post by: Космич on February 16, 2019, 12:14:44 AM
Понадобилась подпрограмма для поиска заданного значения в массиве и в случае успеха возврата его индекса.

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

Code: (clickermann) [Select]
$arr[0] = "afds"
$arr[1] = "bd3h"
$arr[2] = "ce56"

$name_array = "$arr"
$cell_array = 1

PRINT(GETVAR(STRCONCAT($name_array, "[", GETVAR("$cell_array"), "]" ) ) ) // Значение по индексу возвращает правильно

PRINT(ARRSIZE(GETVAR("$name_array"))) // А вот размер массива не возвращает

HALT
Title: Re: GETVAR и ARRSIZE
Post by: Космич on February 16, 2019, 03:48:47 AM
короче ладно, сделал пока так, но скорее всего перейду на более узкоспециализированный вариант под свою задачу  :'(

Code: (clickermann) [Select]
$arr[0] = "afds"
$arr[1] = "bd3h"
$arr[2] = "ce56"

SUB(ARRSEARCH, $name_array, $value_in_array, $size_array)
   $return = - 1
   FOR($cell_array = $size_array, $cell_array > -1,  - 1)
      IF(GETVAR(STRCONCAT($name_array, "[", GETVAR("$cell_array"), "]" ) ) = $value_in_array)
         $return = $cell_array
         $cell_array = 0
      END_IF
   END_CYC
END_SUB

ARRSEARCH("$arr", "bd3h", ARRSIZE($arr)-1)

PRINT($return)

HALT