Question

J'utilise un fichier pour envoyer des données à des variables globales dans un fichier globals et ayant un autre essai de fichier et de récupérer que les données du fichier globals après.

Exemple:

Fichier principal envoie des données à fichier global et d'autres fichiers récupère les données de fichier global

Pour une raison quelconque les données ne sont pas conservées. Quand je tire les données du fichier global, il est pas là. Pourquoi?

Voici quelques exemples de code:

;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 et copy.au3 ont été construits en .exe et je double-cliquez sur principal pour l'exécuter.

Le résultat: g1 $ et $ g2 sont égaux à « » et « » quand il doit être imprimé « trucs »

Était-ce utile?

La solution

Ceci est parce que global.au3 ne soit pas mis à jour. Il est à fournir des valeurs initiales vos variables. L'utilisation #include "global.au3" est le même que l'écriture:

;main.au3
#include-once
Global $g1 = ""
Global $g2 = ""

$g1 = "stuff"
$g2 = "stuff"

Run("copy.exe")

et

;copy.au3
#include-once
Global $g1 = ""
Global $g2 = ""

MsgBox(0, $g1, $g2)

Comme vous pouvez le voir, copy.au3 (copy.exe) a set $g1 et $g2 à "".

Pour passer vos variables $g1 et $g2 à copy.exe, vous pouvez utiliser IniRead()/IniWrite() pour lire / écrire un fichier .ini ou de transmettre les variables comme paramètres de ligne de commande.

Voici un exemple de l'option de paramètres de ligne de commande:

(pas global.au3 nécessaire; compiler main.au3 et copy.au3; double-cliquez sur main.exe à terme)

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)

J'utilisé ShellExecute() au lieu de Run() parce Run() a été une douleur dans le $$ a dans le passé (pour moi). Habituellement, je n'ai pas de problèmes avec ShellExecute() et ShellExecuteWait().

En outre, pour plus d'informations sur les paramètres de ligne de commande que vous pouvez rechercher sur « Paramètres de ligne de commande » dans l'aide AutoIt.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top