Da du globale Variablen ansprachst:
Was bei einem Dictionary auch viele nicht wissen:
Die AutoIt-Variable enthält lediglich eine Referenz (Pointer/Verweis) auf das Dictionary-Objekt und nicht das Objekt selbst.
Daher kann man das gleiche Dictionary in verschiedenen Funktionen verwenden, ohne eine globale Variable zu verwenden:
AutoIt
B(A())
A()
Func A()
Local Static $oDic = ObjCreate("Scripting.Dictionary")
; Zufallskey füllen:
$oDic( Random(1,100,1) ) = "hat A() gefüllt"
; aktuellen Dictionary-Inhalt ausgeben:
Local $sOut = ""
For $sKey in $oDic.Keys
$sOut &= $sKey & ": " & $oDic($sKey) & @CRLF
Next
MsgBox(0,"", $sOut)
; Pointer(!) auf Dictionary zurückgeben:
Return $oDic
EndFunc
Func B($oTmp)
; B fügt ein weiteres Element dem Dictionary in Funktion A() hinzu
$oTmp("B") = "Hat B() gefüllt"
EndFunc
Alles anzeigen
Umgekehrt muss man dies natürlich auch beachten, wenn man mal tatsächlich eine Kopie und keinen Verweis eines bestehenden Dictionaries benötigt. In dem Fall muss man Helferlein wie diese Funktion bemühen: