2011-01-13 3 views
0

Я использую один файл для отправки данных глобальным переменным в файле глобальных данных, а другой файл пытается и извлекает эти данные из файла globals.Данные не сохраняются в autoit

Пример:

Основной файл отправляет данные глобального файла и другой файл получает данные из глобального файла

По какой-то причине, данные не сохранились. Когда я вытаскиваю данные из глобального файла, его там нет. Почему это?

Вот несколько примеров кода:

;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-файл, и я дважды щелкнуть мышью на главной, чтобы запустить его.

Результат: $ g1 и g2 $ равны «» и «», когда он должен печатать «материал»

ответ

2

Это потому, что 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 не требуется; компиляции main.au3 и copy.au3; двойной щелчок main.exe для запуска)

магистраль .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.

Смежные вопросы