题
我正在使用一个文件将数据发送到Globals文件中的全局变量,并在另一个文件中尝试从Globals文件中检索该数据。
例子:
主文件将数据发送到全局文件,而其他文件从全局文件获取数据
由于某种原因,数据无法保留。当我从全局文件中获取数据时,它不存在。为什么是这样?
这是一些示例代码:
;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等于“和”应该打印“东西”的“”和“”
解决方案
这是因为 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.au3
(copy.exe
) 有 $g1
和 $g2
调成 ""
.
通过你 $g1
和 $g2
变量 copy.exe
, ,您可以使用 IniRead()/IniWrite()
要读取/编写.ini文件或将变量作为命令行参数传递。
这是命令行参数选项的示例:
(无需global.au3; compile 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)
我用了 ShellExecute()
代替 Run()
因为 Run()
过去(对我来说)是A $$的痛苦。我通常没有任何问题 ShellExecute()
和 ShellExecuteWait()
.
另外,有关命令行参数的更多信息,您可以在自动启用帮助中搜索“命令行参数”。
不隶属于 StackOverflow