我正在使用一个文件将数据发送到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().

另外,有关命令行参数的更多信息,您可以在自动启用帮助中搜索“命令行参数”。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top