Вопрос

Я использую один файл для отправки данных в глобальные переменные в файле 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top