Что нового

Использование AutoIt3ExecuteLine с массивами и переменными

Norm

Продвинутый
Сообщения
269
Репутация
70
Всем доброго вечера

Подскажите пожалуйста, возможно ли реализовать строку кода (с использованием AutoIt3ExecuteLine) применительно к массивам и переменными

Есть вот такой кодб в котором пытаюсь реализовать подобное решение как с MsgBox (см. пример)
Код:
#include <Array.au3>

Local $Bez = "MG"
Local $sUeberschrift = "№|MG-Intervalle|Lücken|Zentrale 1|Zentrale 2"
Local $Test[1][5] = [["0","34 -- 67","<>","5","8"]]
_ArrayAdd($Test,"1|123 -- 234|<>|5|7")
_ArrayAdd($Test,"2|156 -- 374|<>|4|5")

; Пример того, как это должно выглядеть на выходе
_ArrayDisplay($Test,"Gruppenintervallen "& $Bez,"",0+64,"|",$sUeberschrift)

; Пример с передачей сообщения
Local $sCode = "MsgBox(0, 'Info-1', 'worked!')"
Run(@AutoItExe&' /AutoIt3ExecuteLine "'&$sCode&'"')

Sleep(1000)
; попытка совместить оба примера
$sCode = "_ArrayDisplay(''& $Test &'','Gruppenintervallen''& $Bez &'','''',64,'|',''& $sUeberschrift &'')"
Run(@AutoItExe&' /AutoIt3ExecuteLine "'& $sCode &'"')

Возможно я кавычки не правильно расставил, или такую конструкцию реализовать не получится
 
Последнее редактирование:

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Вам нужно понять что /AutoIt3ExecuteLine это запуск отдельного однострочного скрипта в отдельном процессе. Он не знает о переменных вашего скрипта и не может использовать UDF функции

Создайте отдельный однострочный скрипт с вашим содержимым
Код:
_ArrayDisplay(''& $Test &'','Gruppenintervallen''& $Bez &'','''',64,'|',''& $sUeberschrift &'')

Запустите его и вы увидите результат. Это будет эквивалентно /AutoIt3ExecuteLine
 
  • Like
Реакции: Norm
Автор
N

Norm

Продвинутый
Сообщения
269
Репутация
70
Спасибо за разъяснение.
В принципе я догадался, по какому принципу это работает и переменные он вроде принимает тоже, но вот на счет UTF узнать мне было не откуда.
Наверное так и придется делать создавать файл, вписывать в него эту строку, а после использования удалять.
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
переменные он вроде принимает тоже
Вы можете передать содержимое переменной в строковом виде, но не саму переменную
Код:
Local $sVar = "Содержимое"
RunWait(@AutoItExe & ' /AutoIt3ExecuteLine "MsgBox(0, Default, ''' & $sVar & ''')"')
RunWait(@AutoItExe & ' /AutoIt3ExecuteLine "MsgBox(0, Default, $sVar"') ; Ошибка
 
  • Like
Реакции: Norm
Верх