Author Topic: Ошибки при повторении скрипта.  (Read 2167 times)

0 Members and 1 Guest are viewing this topic.

Leizer

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Ошибки при повторении скрипта.
« on: August 26, 2021, 05:21:37 PM »
Привет, есть скрипт в котором использован скрипт с выбором.
Он несколько раз повторяется в скрипте, первый раз все как надо, а во втором и далее все плачевно:
Варианты выбора рандомно раскиданы, при сделаном выборе в файл сохраняются значения из предведущего выбора.
буду благодарен если подскажите как решить.

Скрипт с выбором:
Code: [Select]
$input_file = "\vibor\Buildings.txt"           // Исходные данные - большой список
$output_file = "\vibor\Buildings_selected.txt" // Результат - список выбранных
TFREADARR($input_file, $items_all)
TFREADARR("\vibor\item_flags_all.txt", $itemsflags_all)
IF(ARRSIZE($itemsflags_all) < ARRSIZE($items_all))
   FOR($i = ARRSIZE($itemsflags_all) , $i < ARRSIZE($items_all))
      ARRPUSH($itemsflags_all, 0)
   END_CYC
END_IF
//##############################################################################
//Вывод текста на экран по 10 строк с чекбоксами
FOR($a, $a < INT ((ARRSIZE($items_all) / 22)+1))
   $n = $check * 22
   FOR($i = $n, (($i < $n+22) AND ($i < ARRSIZE($items_all))))
      ARRPUSH($items, $items_all[$i])
      ARRPUSH($itemsflags, $itemsflags_all[$i])
   END_CYC
   Window_checkbox_flags(101, "Выберите пункты :", 3000)
//   Window_checkbox_flags(110, "Выберите пункты :", 35) //жирным шрифтом текст не помещается ?
   STRSEPARATE ($flags, ",", $item_flags)
   STRSEPARATE($text, "|", $selecteditems)
   $flags = $item_flags[0]
   FOR($i=0, $i < ARRSIZE($item_flags))
      $flags = STRCONCAT($flags, ",", $item_flags[$i])
      IF($item_flags[$i] = 1)                       // Запись выбранных в массив
         ARRPUSH($Selected, $selecteditems[$i])
      END_IF
   END_CYC
//==============================================================================
//  Подговка ответа
   IF(ARRSIZE($Selected) > 0)
      $otv = $Selected[0]
      FOR($i=1, $i < ARRSIZE($Selected))
         $otv = STRCONCAT($otv, "\n", $Selected[$i])
      END_CYC
      $text = STRCONCAT("Выбраны пункты:\n\n", $otv)
      IF($return = -1)
         $hint = "Состояние чекбоксов не изменено"
         HINTPOPUP($hint, "ВНИМАНИЕ")
      END_IF
   ELSE
      $text = "Вы ничего не выбрали"
   END_IF
//==============================================================================
   TFWRITEARR ($output_file, $Selected) // Запись списка выбранных
   UNDEFINE($items)
   UNDEFINE($itemsflags)
   UNDEFINE($Selected)
   INC($check)  // следующие 10 строк
END_CYC

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Ошибки при повторении скрипта.
« Reply #1 on: August 26, 2021, 08:13:10 PM »
как минимум не задано начальное значение переменной цикла $a
Дальше не смотрел.


Leizer

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Ошибки при повторении скрипта.
« Reply #2 on: August 26, 2021, 10:19:55 PM »
Вроде исправил, но не помогло. :(

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Ошибки при повторении скрипта.
« Reply #3 on: August 27, 2021, 08:33:44 AM »
Посмотрел с компа.

Не знаю весь это скрипт или часть. Если он выполняется по кругу, то вот в начале есть чтение в массив
Code: (clickermann) [Select]
TFREADARR("\vibor\item_flags_all.txt", $itemsflags_all)Дальше он добивается нулями до длины массива $items_all.
На следующем проходе скрипта (если он есть) новое чтение TFREADARR добавит всё из файла к уже существующему массиву.

В цикле $a:
Code: (clickermann) [Select]
STRSEPARATE($flags, ",", $item_flags)
STRSEPARATE($text, "|", $selecteditems)
массивы $item_flags и $selecteditems каждый раз создаются разбивкой строк. При этом старое содержимое не удаляется. Массивы бесконтрольно растут и не соответствуют тому, что нужно.


Leizer

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Ошибки при повторении скрипта.
« Reply #4 on: August 27, 2021, 11:16:33 AM »
Спасибо, простите за глупые вопросы просто не очень хорошо разбираюсь.
Можно как-то очистить данные масивы посел прохода скрипта?
UNDEFINE не помагает пытался.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Ошибки при повторении скрипта.
« Reply #5 on: August 27, 2021, 06:11:06 PM »
Именно UNDEFINE . Добавить 2 шт. к остальным