Author Topic: Исключить некоторые значения из списка условия  (Read 1788 times)

0 Members and 1 Guest are viewing this topic.

novhome

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Есть список аккаунтов в файле .ini в виде account1="login1", account2="login2".....accountn="loginn" . В одном сценарии скрипт проходится по всем аккаунтам циклом и проблем не возникает. Во втором сценарии из списка необходимо исключить некоторые аккаунты, в третьем сценарии нужно исключить из списка какие-то другие. Подскажите как реализовать.
Code: (Clickermann) [Select]
$acc_number = 1 // Стартовый номер аккаунта
$acc_end = 50 // Конечный номер аккаунта
WHILE($acc_number <= $acc_end)
       
      $login=INIREAD("config.ini", STRCONCAT("account", $acc_number, "ACCOUNT"))
     
       // Здесь какой-то код

       INC($acc_number)
END_CYC
« Last Edit: August 26, 2021, 10:20:15 AM by novhome »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Как определить "некоторые аккаунты"?

У тебя в INIREAD не хватает скобки. А в SRTCONCAT буквы поменялись местами.
« Last Edit: August 26, 2021, 08:34:25 AM by Vint »


novhome

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Поправил.
"Некоторые аккаунты" известны. Например, для второго сценария нужно исключить 3, 7, 8, 12, 15, а для третьего, например, 2, 11, 30, 44, 47. Можно, наверное, номера в файлы запихнуть и оттуда выдергивать или в массивы. Но как применить не соображу.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
"Некоторые аккаунты" известны. Например, для второго сценария нужно исключить 3, 7, 8, 12, 15, а для третьего, например, 2, 11, 30, 44, 47.
Ну вот, другое дело  :) а то мало ли как ты исключаешь аккаунты, может по номеру аккаунта, а может по логину, а может по давности обработки, может ещё чего.
Вот такая фраза всё бы разъяснила сразу:
"необходимо исключить обработку аккаунтов с определёнными номерами." или "если номер аккаунта содержится в списке '3, 7, 8, 12, 15' - обработку пропустить"
В рамках курса "Как правильно и понятно составлять техническое задание". На курс вы можете записаться перейдя по ссылке...  :D :D :D

Code: (clickermann) [Select]
$script2_ignore = ",3,7,8,12,15,"
$script3_ignore = ",2,11,30,44,47,"

//сценарий 2
$acc_start = 1 // Стартовый номер аккаунта
$acc_end = 50 // Конечный номер аккаунта
$acc_number = $acc_start
WHILE($acc_number <= $acc_end)
    IF(STRPOS($script2_ignore, STRCONCAT(",", $acc_number, ",")) = 0)
        $login=INIREAD("config.ini", STRCONCAT("account", $acc_number, "ACCOUNT"))
        // Здесь какой-то код сценария 2
    END_IF
    WAITMS(30)
    INC($acc_number)
END_CYC

//сценарий 3
FOR($acc_number=$acc_start, $acc_number <= $acc_end)
    IF(STRPOS($script3_ignore, STRCONCAT(",", $acc_number, ",")) = 0)
        $login=INIREAD("config.ini", STRCONCAT("account", $acc_number, "ACCOUNT"))
        // Здесь какой-то код сценария 3
    END_IF
    WAITMS(30)
END_CYC
« Last Edit: August 26, 2021, 01:06:54 PM by Vint »


novhome

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Спасибо, работает. Теперь немного усложню  :). На основе предыдущей задачи нужно часть аккаунтов не пропустить, а прогнать их через другой код.

Code: (Clickermann) [Select]
$script1_ignore = ",3,7,8,12,15," //Список аккаунтов, которые пропускаются
$script2_ignore = ",2,11,30,44,47," // Список аккаунтов, к которым применяется другой код

$acc_start = 1 // Стартовый номер аккаунта
$acc_end = 50 // Конечный номер аккаунта
$acc_number = $acc_start
WHILE($acc_number <= $acc_end)
IF(STRPOS($script1_ignore, STRCONCAT(",", $acc_number, ",")) = 0)
$status = 1
END_IF

IF(Здесь условие, при котором срабатывают из списка $script2_ignore)
$status = 2
END_IF

WAITMS(30)

SWITCH($status)
CASE(1)
$login=INIREAD("config.ini", STRCONCAT("account", $acc_number, "ACCOUNT"))
// Далее код 1
CASE(2)
$login=INIREAD("config.ini", STRCONCAT("account", $acc_number, "ACCOUNT"))
// Далее код 2
END_SWITCH

INC($acc_number)

END_CYC

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Спасибо, работает. Теперь немного усложню  :). На основе предыдущей задачи нужно часть аккаунтов не пропустить, а прогнать их через другой код.
Всё почти то же самое
Code: (clickermann) [Select]
$script1_ignore = ",3,7,8,12,15,"
$script2_action = ",2,11,30,44,47,"

//сценарий 1
$acc_start = 1 // Стартовый номер аккаунта
$acc_end = 50 // Конечный номер аккаунта
$acc_number = $acc_start
FOR($acc_number=$acc_start, $acc_number <= $acc_end)
    IF(STRPOS($script1_ignore, STRCONCAT(",", $acc_number, ",")) = 0)
        $login = INIREAD("config.ini", STRCONCAT("account", $acc_number, "ACCOUNT"))
        // Здесь какой-то код сценария 2
    END_IF
    IF(STRPOS($script2_action, STRCONCAT(",", $acc_number, ",")) ! 0)
        // прогнать их через другой код
    END_IF
    WAITMS(30)
END_CYC