Author Topic: GETVAR и ARRSIZE  (Read 1267 times)

0 Members and 1 Guest are viewing this topic.

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
GETVAR и ARRSIZE
« 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
« Last Edit: February 16, 2019, 02:59:36 AM by Космич »
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Re: GETVAR и ARRSIZE
« Reply #1 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
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»