Frage

Ich bin mit einer Dateidatum auf globale Variablen in einer Globals Datei zu senden und eine andere Datei Versuch mit und abrufen, die Daten aus der Globals-Datei nach.

Beispiel:

Hauptdatei sendet Daten an globaler Datei und andere Datei erhält Daten von den globalen Datei

Aus irgendeinem Grund werden die Daten nicht erhalten werden. Wenn ich die Daten aus der globalen Datei ziehen ist es nicht da. Warum ist das?

Hier ist ein Beispiel-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 und copy.au3 wurden in .exe gebaut und ich einen Doppelklick auf Haupt um es auszuführen.

Das Ergebnis: $ g1 und g2 $ gleich „“ und „“, wenn es Druck „Material“ werden sollte,

War es hilfreich?

Lösung

Das ist, weil global.au3 nicht aktualisiert. Es bietet Anfangswerte auf Ihre Variablen. #include "global.au3" verwendet, ist das gleiche wie das Schreiben:

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

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

Run("copy.exe")

und

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

MsgBox(0, $g1, $g2)

Wie Sie sehen können, copy.au3 (copy.exe) hat $g1 und $g2 Satz "".

Um Ihre $g1 und $g2 Variablen copy.exe passieren, können Sie entweder IniRead()/IniWrite() zu lesen / eine INI-Datei schreiben oder die Variablen als Kommandozeilen-Parameter übergeben.

Hier ist ein Beispiel für die Befehlszeilenparameter Option:

(kein global.au3 erforderlich; kompilieren main.au3 und copy.au3; Doppelklick main.exe zu 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)

habe ich ShellExecute() statt Run() weil Run() ein Schmerz im a gewesen $$ in der Vergangenheit (für mich). Ich habe nicht in der Regel keine Probleme mit ShellExecute() und ShellExecuteWait().

Auch für weitere Informationen über Kommandozeilenparameter Sie auf „Befehlszeilenparameter“ in der AutoIt Hilfe suchen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top