0

1つのファイルを使用してグローバルファイルのグローバル変数にデータを送信し、別のファイルでそのデータをグローバルファイルから取得しようとしています。

例:

メインファイルはグローバルファイルにデータを送信し、他のファイルはグローバルファイルからデータを取得します

何らかの理由でデータが保存されていません。グローバルファイルからデータをプルすると、そこにありません。どうしてこれなの?

次にいくつかのサンプルコードを示します。

;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に組み込まれているので、mainをダブルクリックして実行します。

結果:$g1と$g2は、「stuff」を出力する必要がある場合は「」と「」に等しくなります。

4

1 に答える 1

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.au3copy.exe)は$g1$g2設定されてい""ます。

$g1$g2変数をに渡すにcopy.exeは、を使用IniRead()/IniWrite()して.iniファイルの読み取り/書き込みを行うか、変数をコマンドラインパラメーターとして渡すことができます。

コマンドラインパラメータオプションの例を次に示します。

(global.au3は必要ありません。main.au3とcopy.au3をコンパイルします。main.exeをダブルクリックして実行します)

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)

過去にa$$が苦痛だったので、ShellExecute()代わりに使用しました(私にとって)。私は通常、とに問題はありません。Run()Run()ShellExecute()ShellExecuteWait()

また、コマンドラインパラメータの詳細については、AutoItヘルプの「コマンドラインパラメータ」で検索できます。

于 2011-01-13T17:31:21.253 に答える