I dati non vengono conservati in AutoIt
-
10-10-2019 - |
Domanda
Sto usando un file per inviare i dati alle variabili globali in un file globali e avere un altro file di prova e recuperare i dati dal file globali dopo.
Esempio:
file principale invia i dati al file globale e altri file viene dati dal file globale
Per qualche motivo i dati non viene conservato. Quando ho estrarre i dati dal file globale che non ci sia. Perché è questo?
Ecco qualche esempio di codice:
;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 e copy.au3 sono stati costruiti in exe e fare doppio clic su principale per eseguirlo.
Il risultato: $ g1 e $ g2 sono uguali a "" e "" quando dovrebbe essere la stampa "roba"
Soluzione
Questo perché global.au3
non viene aggiornato. E 'che fornisce i valori iniziali per le variabili. Utilizzando #include "global.au3"
è lo stesso di scrittura:
;main.au3
#include-once
Global $g1 = ""
Global $g2 = ""
$g1 = "stuff"
$g2 = "stuff"
Run("copy.exe")
e
;copy.au3
#include-once
Global $g1 = ""
Global $g2 = ""
MsgBox(0, $g1, $g2)
Come si può vedere, copy.au3
(copy.exe
) ha $g1
e $g2
insieme a ""
.
Per passare le variabili $g1
e $g2
a copy.exe
, è possibile utilizzare IniRead()/IniWrite()
per leggere / scrivere un file .ini o passare le variabili come parametri della riga di comando.
Ecco un esempio dell'opzione parametri della riga di comando:
(senza global.au3 necessario; compilare main.au3 e copy.au3; doppio click main.exe a run)
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)
ho usato ShellExecute()
invece di Run()
perché Run()
è stato un dolore nel un $$ in passato (per me). Io di solito non ho problemi con ShellExecute()
e ShellExecuteWait()
.
Inoltre, per ulteriori informazioni sui parametri della riga di comando è possibile cercare "Parametri riga di comando" nella Guida AutoIt.