передать параметры от одного скрипта другому

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
-13-
Сообщения: 125
Зарегистрирован: 18 мар 2021, 12:45

set еще имеет преимущество перед local, переменную можно дернуть из функции, а local работает только внутри последней, если ничего не позабыл, практики маловато в последнее время


Sertik
Сообщения: 1601
Зарегистрирован: 15 сен 2017, 09:03

Дорогой - 13 - !

Ну что же Вы меня путаете то:

У Вас стоит строка:

:global fnParse do={:parse [/system script get $script source]}

где же Вы тут видите мою с двойным парсингом !:

[[:parse "[:parse [/system script get $scrName source]] $Var]"]]

У Вас совем другое - Вы просто создаете функцию из тела скрипта и всё. Это не передача параметров от одного скрипта другому налету. Совсем не о том в посте речь идет.
Последний раз редактировалось Sertik 07 дек 2023, 21:52, всего редактировалось 1 раз.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Sertik
Сообщения: 1601
Зарегистрирован: 15 сен 2017, 09:03

Код: Выделить всё

# простая передача параметров скрипту и запуск его (параметр любого типа будет превращен в строку)
[[:parse "[:parse [/system script get $msgTxt source]] $Variable"]]

# или то же самое, но при многопоточности c передачей параметров
:local scriptRun "[[:parse [system script get $calledFunctionName source]] ID=$queryID ChatID=$queryChatID]"
:execute script=$scriptRun

# или в одну строку из скрипта
:execute script="[[:parse [system script get $calledFunctionName source]] ID=$queryID ChatID=$queryChatID]"

# из файла
:execute script="[[:parse [/file get $FileName content]] ID=$queryID ChatID=$queryChatID]"

Код: Выделить всё

# передача параметров любого типа кроме массивов
# если текст даже ТОЛЬКО ЛАТИНСКИЙ, НО СОДЕРЖИТ ПРОБЕЛЫ ИЛИ СПЕЦ СИМФОЛЫ -
# то  он всё равно должен быть экранирован !

:local Var1 "\"Hello Пользователь\""  
:local Var2 "12"
:local Var3 14
:local Var4 192.168.0.1
:local Var5 [/system clock get time]

:log info ("$Var1"." $[:typeof $Var1]")
:log info ("$Var2"." $[:typeof $Var2]")
:log info ("$Var3"." $[:typeof $Var3]")
:log info ("$Var4"." $[:typeof $Var4]")
:log info ("$Var5"." $[:typeof $Var5]")


[[:parse "[:parse [/system script get $scrName source]] Par1=[:to$[:typeof $Var1] $Var1] [:to$[:typeof $Var2] $Var2] [:to$[:typeof $Var3] $Var3] [:to$[:typeof $Var4] $Var4] [:to$[:typeof $Var5] $Var5]"]]

# или в фоне

:execute script="[[:parse "[:parse [/system script get $scrName source]] Par1=[:to$[:typeof $Var1] $Var1] [:to$[:typeof $Var2] $Var2] [:to$[:typeof $Var3] $Var3] [:to$[:typeof $Var4] $Var4] [:to$[:typeof $Var5] $Var5]"]]"
либо, чтобы не экранировать строковые данные можно пользоваться моей микрофункцией экранирования параметров:

Код: Выделить всё

:local Shield do={
   :if ([:typeof $1]="array") do={
     :return "\"the array cannot be passed\""}

   :if ([:typeof $1]="str") do={
       :return "\"$1\""} \
         else={ \
          :return $1}
  }
Тогда строковый параметр можно задавать без экранирования, как обычно, но пропускать сразу через Shield:

:local Var1 [$Shield "Hello Пользователь"]

а потом вызывать передачу.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Ответить