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"

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top