Variablen und Funktionen aus einer anderen .au3 verwenden

  • Hallo liebe AutoIT-Gemeinde,

    ich habe ein Problem, welches ich selbst nicht lösen kann, da ich es nicht beschreiben kann. =/

    Zum Einen möchte ich eine Funktion aufrufen, die einen Button erstellt, das funktioniert auch gut.
    Wenn dieser Button angeklickt wird, soll er durch eine weitere Funktion "zerstört" werden und in einer anderen Funktion wieder ersetzt werden.
    Allerdings ist es so, dass letztere Funktion automatisch in Endlosschleife aufgerufen wird und das GUI Somit zerstört wird.
    Hier der Code:

    Launch.au3
    [autoit]

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $New
    _NewStart()
    _Village()
    _SetStats()
    GUICtrlSetState($Load, $GUI_ENABLE)
    Case $Load
    _SetStats()
    _Village()
    Case $_Village_Forest
    _Village_Destroy()
    _Forest()
    EndSwitch
    WEnd

    [/autoit]

    Hier die angesprochene "andere" .au3

    Dest.au3
    [autoit]

    Global $_Village_Forest, $_Forest_Village, $_Forest_Search

    [/autoit] [autoit][/autoit] [autoit]

    Func _Village()
    $_Village_Forest = GUICtrlCreateButton("Wald", 160, 20, 100, 20)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Village_Destroy()
    GUICtrlDelete($_Village_Forest)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Forest()
    $_Forest_Village = GUICtrlCreateButton("Zurück", 160, 20, 100, 20)
    $_Forest_Search = GUICtrlCreateButton("Suchen", 160, 50, 100, 20)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Forest_Destroy()
    GUICtrlDelete($_Forest_Village)
    GUICtrlDelete($_Forest_Search)
    EndFunc

    [/autoit]

    Das zum ersten Problem, in der obigen .au3 wird die Funktion "_SetStats()" aufgerufen, die wiederum in einer anderen .au3 liegt.
    Diese funktioniert auch genau so wie sie soll, ABER nachdem man das Script beendet (uncompiliert) werden Deklarationsfehler angezeigt.

    Var.au3
    [autoit]

    Func _SetStats()
    GUICtrlSetData($Prog_Label, IniRead(@ScriptDir & "\cfg\sys.ini", "Stats", "Force", ""))
    EndFunc

    [/autoit]

    Ich hoffe das ist halbwegs verständlich, un mir kann evtl. jemand helfen.
    Ich bedanke mich schon einmal im Voraus für alle Mühen!

    mfg* vism

    // -- EDIT
    Ich konnte das Problem lösen.
    Ich habe die Deklaration in der letzten Datei global vorgenommen.
    Zur Lösung mit dem Loop der Buttons, ich habe die Buttons anstatt mit GUICtrlCreate und GUICtrlDelete, mit den Stati HIDE und SHOW versehen, in Kombination mit dem Erstellen der Buttons in der Main-Datei löste sich das Problem.
    Danke trotzdem! =)

    Einmal editiert, zuletzt von vism (16. Februar 2014 um 11:49) aus folgendem Grund: Problem gelöst

  • Da du hier nur Schnipsel deines Codes zeigst, könnte man hier wahlos herumraten. Es könnte vielleicht hilfreich sein, wenn du uns mitteilen würdest, welche Variablen laut Fehlermeldung nicht deklariert wurden. Mal davon abgesehen, das du den Fehler dann ja auch eigentlich recht einfach beheben könntest. Und zwar in dem du sie einfach deklarierst. ;)