Вопрос
Я использую один файл для отправки данных в глобальные переменные в файле Globals, а другой файл пытается получить эти данные из файла Globals после.
Пример:
Основной файл отправляет данные в глобальный файл, а другой файл получает данные из Global File
По какой -то причине данные не сохраняются. Когда я получаю данные из глобального файла, его там нет. Почему это?
Вот какой -то пример кода:
;main.au3
#include-once
#include "global.au3"
$g1 = "stuff"
$g2 = "stuff"
Run("copy.exe")
;global.au3
#include-once
Global $g1 = ""
Global $g2 = ""
;copy.au3
#include-once
#include "global.au3"
MsgBox(0, $g1, $g2)
main.au3 и copy.au3 были встроены в .exe, и я дважды нажимаю на Main, чтобы запустить его.
Результат: $ g1 и $ g2 равны «» и «», когда он должен печатать «вещи»
Решение
Это потому что global.au3
не обновляется. Это обеспечивает начальные значения для ваших переменных. С использованием #include "global.au3"
это то же самое, что и написание:
;main.au3
#include-once
Global $g1 = ""
Global $g2 = ""
$g1 = "stuff"
$g2 = "stuff"
Run("copy.exe")
а также
;copy.au3
#include-once
Global $g1 = ""
Global $g2 = ""
MsgBox(0, $g1, $g2)
Как вы видете, copy.au3
(copy.exe
) имеет $g1
а также $g2
установлен в ""
.
Чтобы пройти $g1
а также $g2
переменные copy.exe
, вы можете либо использовать IniRead()/IniWrite()
Чтобы прочитать/написать файл .ini или передать переменные в качестве параметров командной строки.
Вот пример параметров параметров командной строки:
(Нет Global.au3; Compile main.au3 и copy.au3; двойной щелчок main.exe для запуска)
main.au3
;main.au3
$g1 = "stuff"
$g2 = "stuff"
ShellExecute('copy.exe', $g1 & ' ' & $g2)
copy.au3
;copy.au3
$g1 = $CmdLine[1]
$g2 = $CmdLine[2]
MsgBox(0, $g1, $g2)
я использовал ShellExecute()
вместо Run()
потому что Run()
была боль в $$ в прошлом (для меня). У меня обычно нет проблем с ShellExecute()
а также ShellExecuteWait()
.
Кроме того, для получения дополнительной информации о параметрах командной строки вы можете искать по «Параметрам командной строки» в Autoit Help.