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

Основной раздел => Общие вопросы => Topic started by: clicker_student on April 16, 2019, 10:29:23 PM

Title: Как убить массив токенов после вызова STRSEPARATE() ?
Post by: clicker_student on April 16, 2019, 10:29:23 PM
Имею файл с 15 строками, каждая строка содержит 7 значений, разделенных ";" (CSV-файл)
Пытаюсь загрузить этот файл в массив и разобрать каждую строку функцией STRSEPARATE() для дальнейшего распарсивания . Но столкнулся, что получаемый массив токенов с каждым вызовом STRSEPARATE() растет - то есть массив не убивается, новые токены добавляются в него
Code: (clickermann) [Select]
// загрузим файла в массив
TFREADARR("parameters.csv", $parameters_arr)
$line = STRCONCAT("TFREADARR(parameters.csv, $parameters_arr): ARRSIZE($parameters_arr)=", ARRSIZE($parameters_arr)) 
$params_count = ARRSIZE($parameters_arr)
FOR ($par_ind = 0, $par_ind < $params_count, 1)
  $curr_line = $parameters_arr[$par_ind]
  STRSEPARATE($curr_line, ";", $param_tokens)
  $line = STRCONCAT($par_ind, ": ARRSIZE($param_tokens)=", ARRSIZE($param_tokens)) 
  TFWRITE("log.txt", $line)
  // попытка зачистить массив $param_tokens не сработала
  $tokens = ARRSIZE($param_tokens)
  FOR($kount=0,$kount < $tokens, 1)
    ARRPOP($param_tokens)
  END_CYC
END_CYC
Результат:
Code: (clickermann) [Select]
TFREADARR(parameters.csv, $parameters_arr): ARRSIZE($parameters_arr)=15
0: ARRSIZE($param_tokens)=7
1: ARRSIZE($param_tokens)=14
2: ARRSIZE($param_tokens)=21
3: ARRSIZE($param_tokens)=28
4: ARRSIZE($param_tokens)=35
5: ARRSIZE($param_tokens)=42
6: ARRSIZE($param_tokens)=49
7: ARRSIZE($param_tokens)=56
8: ARRSIZE($param_tokens)=63
9: ARRSIZE($param_tokens)=70
10: ARRSIZE($param_tokens)=77
11: ARRSIZE($param_tokens)=84
12: ARRSIZE($param_tokens)=91
13: ARRSIZE($param_tokens)=98
14: ARRSIZE($param_tokens)=105

Что делать, как с этим бороться? Мне нужно чтобы перед следующим вызовом STRSEPARATE() массив $param_tokens был нулевого размера.

Буду благодарен объяснению моей ошибки или любому костылю, который решит мою проблему.
Title: Re: Как убить массив токенов после вызова STRSEPARATE() ?
Post by: clicker_student on April 16, 2019, 10:44:56 PM
Спасибо!!!! Скоро все тонкости узнаю.
Я уже пытался по топорномму рубить  :)  Не помогло
Code: (clickermann) [Select]
SETVAR($param_tokens, 0)  // вешает скрипт
$param_tokens  = 0  // не реагирует
Title: Re: Как убить массив токенов после вызова STRSEPARATE() ?
Post by: Vint on April 17, 2019, 11:04:37 AM
Code: (clickermann) [Select]
$param_tokens  = 0  // не реагирует

Если $param_tokens - массив, то такая команда эквивалентна присвоению значения первому элементу
Code: (clickermann) [Select]
$param_tokens[0] = 0Само собой массив так не очистить.