Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: winwebber on January 04, 2019, 08:05:17 PM
-
Как почистить все переменные при "рестарте" скрипта и спать спокойно?
Пример
$a=$a+1
print ($a)
Result
1
2
3
Как получить
1
1
1
Как и писал выше перебирать все переменные такое себе решение. Можно ли массово все потереть?
что-то типа
UNDEFINE(ALL)
$a=$a+1
print ($a)
-
Мм ну в скрипте много include не самый удобный вариант.
Проще уже сразу чистить в будущем, есть ли варианты ещё, кроме как руками пройтись?
или
можно, внесите все используемые переменные в массив и очищайте его одной командой.
как-то можно реализовать кодом в родительском скрипте? Можно пример кода?
-
Подниму тему, так и не получилось решить вопрос.
В идеале конечно найти решение близкое к UNDEFINEALL()
Но даже
можно, внесите все используемые переменные в массив и очищайте его одной командой.
Не понял как это работает, что имелось в виду, попробовал так, но
logclear
$a=1
$b=2
print("$a=",$a)
print("$b=",$b)
arrpush($c,$a)
arrpush($c,$b)
print("$c")
FOR($i=0,$i<arrsize($c))
print("$c[",$i,"]=",$c[$i])
END_CYC
UNDEFINE($c)
print("$a=",$a)
print("$b=",$b)
print("$c")
FOR($i=0,$i<arrsize($c))
print("$c[",$i,"]=",$c[$i])
END_CYC
halt
10:27:59 AM $a=1
10:27:59 AM $b=2
10:27:59 AM $c
10:27:59 AM $c[0]=1
10:27:59 AM $c[1]=2
10:27:59 AM $a=1
10:27:59 AM $b=2
10:27:59 AM $c
-
arrpush вносит значение переменных, а не сами переменные, наверно в этом направлении копать надо, но не накопал
-
$c[0] = 1 //это твое переменная а
$c[1] = 32 //это твое переменная б
$c[2] = 3 //это твое переменная с
$c[3] = 66 //это твое переменная д
...... и так далее
//делаем все наши дела, и в конце обнуляем все их одним махом
UNDEFINE($c)
Вот это скорее всего имел ввиду кирил.
Еще как вариант, написать скрипт, который будет из всего текста кода фильтровать все переменные, и создаст соответствующие строки с обнулением их.
-
еще можно вот так
$a
$b
$c
FOR($count = 3, $count > 0, -1)
SETVAR(STRCONCAT("$", CHAR(STRCONCAT("0x4", $count))), #TRUE)
END_CYC
PRINT("a = ", $a, ", b = ", $b, ", c = ", $c)
FOR($count = 3, $count > 0, -1)
SETVAR(STRCONCAT("$", CHAR(STRCONCAT("0x4", $count))), #FALSE)
END_CYC
PRINT("a = ", $a, ", b = ", $b, ", c = ", $c)
HALT
-
$c[0] = 1 //это твое переменная а
$c[1] = 32 //это твое переменная б
$c[2] = 3 //это твое переменная с
$c[3] = 66 //это твое переменная д
...... и так далее
//делаем все наши дела, и в конце обнуляем все их одним махом
UNDEFINE($c)
Вот это скорее всего имел ввиду кирил.
Вероятнее всего.
Но скрипт состоит из более 100 файлов, и не самых оптимизированны, т.е. кода много, боюсь подумать даже сколько переменных. Не все получается в SUB обернуть. Это как минимум нечитаемо будет и не отлаживаемо, если все переменные одним массивом представить.
Еще как вариант, написать скрипт, который будет из всего текста кода фильтровать все переменные, и создаст соответствующие строки с обнулением их.
Надо подумать.
-
Мой вариант чем не подходит?)
Вот еще один вариант через массив
$var534 = 1
$var758 = 1
SUB(SETVARLIST, $variable_names_list, $value)
STRSEPARATE ($variable_names_list, ",", $arraylist)
FOR($count = ARRSIZE($arraylist), $count > 0, -1)
SETVAR(STRCONCAT("$", $arraylist[$count-1]), $value)
END_CYC
UNDEFINE($arraylist)
END_SUB
SETVARLIST("var534,var758", #FALSE)
PRINT("var534 = ", $var534, ", ", "var758 = ", $var758)
HALT
-
Тестиру, что-то пока не получается когда добаляю переменную, но не хочу дергать по-пусту, где-то сам косячу вполне возможно. В процессе. Отпишу.
-
Пока что первый что второй скрипт выдают
На примере второго скрипта.
logclear
$var534 = 1
$var758 = 1
$var111 = 1
SUB(SETVARLIST, $variable_names_list, $value)
STRSEPARATE ($variable_names_list, ",", $arraylist)
FOR($count = ARRSIZE($arraylist), $count > 0, -1)
SETVAR(STRCONCAT("$", $arraylist[$count-1]), $value)
END_CYC
UNDEFINE($arraylist)
END_SUB
SETVARLIST("var534,var758", #FALSE)
PRINT("var534 = ", $var534, ", ", "var758 = ", $var758, " var111 = ", $var111)
HALT
5:22:39 PM var534 = 0, var758 = 0 var111 = 1
Я конечно понимаю, что писать чисто и всё такое.
Но разве это не логично UNDEFINEALL(). Чистит все переменные. Всё с нуля.
В вашем примере мне нужно вызвать подпрогрмму, в которой, перечистить названия переменных. Более 100 файлов, думаю в 5-30 переменных в каждом. Как мне их искать? Таким же успехом я могу сделать UNDEFINE(). С мысл в тож что я душе не "люблю" сколько у меня переменных и как они называются. Знаю что, "много". Надо все обнулить.
Ну и соответственно
logclear
$a=1
$bb=2
$ccc=3
FOR($count = 3, $count > 0, -1)
SETVAR(STRCONCAT("$", CHAR(STRCONCAT("0x4", $count))), #TRUE)
END_CYC
PRINT("a = ", $a, ", bb = ", $bb, ", ccc = ", $ccc)
FOR($count = 3, $count > 0, -1)
SETVAR(STRCONCAT("$", CHAR(STRCONCAT("0x4", $count))), #FALSE)
END_CYC
PRINT("a = ", $a, ", bb = ", $bb, ", ccc = ", $ccc)
HALT
5:41:01 PM a = 1, bb = 2, ccc = 3
5:41:01 PM a = 0, bb = 2, ccc = 3