Pregunta

Estoy usando un archivo para enviar datos a las variables globales en un archivo de variables globales y tener otro archivo de oportunidad y recuperar esos datos desde el archivo de variables globales después.

Ejemplo:

Archivo principal envía los datos a un archivo global y otro archivo obtiene datos de archivos global

Por alguna razón no se está preservando los datos. Cuando me tire de los datos desde el archivo mundial no está allí. ¿Por qué es esto?

Aquí es un código de ejemplo:

;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 y copy.au3 se han incorporado en .exe y haga doble clic en la principal para ejecutarlo.

El resultado: $ G1 y G2 $ son iguales a "" y "" cuando debería estar imprimiendo "cosas"

¿Fue útil?

Solución

Esto se debe a global.au3 no se actualiza. Se proporciona valores iniciales de las variables. Usando #include "global.au3" es lo mismo que escribir:

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

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

Run("copy.exe")

y

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

MsgBox(0, $g1, $g2)

Como se puede ver, copy.au3 (copy.exe) tiene $g1 y $g2 conjunto de "".

Para pasar las variables $g1 y $g2 a copy.exe, También se puede usar IniRead()/IniWrite() para leer / escribir un archivo .ini o pasar las variables como parámetros de línea de comandos.

Este es un ejemplo de la opción de parámetros de línea de comandos:

(sin global.au3 necesario; compilar main.au3 y copy.au3; haga doble clic main.exe a plazo)

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)

Me ShellExecute() utiliza en lugar de Run() porque Run() ha sido un dolor de una $$ en el pasado (para mí). Normalmente no tengo ningún problema con ShellExecute() y ShellExecuteWait().

Además, para obtener más información sobre los parámetros de línea de comandos se puede buscar en "Parámetros de línea de comandos" en la ayuda en AutoIt.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top