Dictionary Problem mit Globaler Definition (action with this object has failed)

  • Hi Leute,
    ich versteh nicht wieso ich in Zeile 34 untenstehende Fehlermeldung bekomme:

    [autoit]

    Global $oOnEventDict = ObjCreate("Scripting.Dictionary")
    $oOnEventDict.CompareMode = 1 ; set to textmode

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: GUICtrlSetOnEventEx
    ; Description ...: Calls a user-defined function with parameter, if control was clicked
    ; Syntax.........: GUICtrlSetOnEventEx($controlID, $Function = Default, $aParameter = Default)
    ; Parameters ....: $controlID - control id
    ; $Function - function name as string
    ; $aParameter - parameter as one dimensional array, list or variable
    ; Author ........: Zeitriss
    ; ===============================================================================================================================
    Func GUICtrlSetOnEventEx($controlID, $Function = Default, $aParam = Default, $OutputFormat = 0)
    If $Function <> Default Then
    Local $Data[2]
    If $aParam = Default Then
    $Data[1] = ""
    Else
    If IsObj($aParam) Then Local $aParameter = $aParam.ToArray ; convert list to array
    If Not IsArray($aParam) And Not IsObj($aParam) Then ;Local $aParameter[1] = [$aParam] ; if param is var
    Local $aParameter[1] = [$aParam]
    EndIf
    ReDim $aParameter[Ubound($aParameter)+1]
    For $i = Ubound($aParameter)-2 to 0 step -1
    $aParameter[$i+1] = $aParameter[$i]
    Next
    $aParameter[0] = "CallArgArray"
    $Data[1] = $aParameter
    EndIf
    $Data[0] = $Function
    If $oOnEventDict.Exists(String($controlID)) Then $oOnEventDict.remove(String($controlID))
    $oOnEventDict.add(String($controlID), $Data)
    ;Global $oOnEventDict = ObjCreate("Scripting.Dictionary"); wenn ich hier auskommentiere, dann gehts
    $oOnEventDict.add("test", "1")
    ; if no parameter is assigned
    If $aParam = Default Then
    GUICtrlSetOnEvent($controlID, $Data[0])
    Return
    EndIf
    GUICtrlSetOnEvent($controlID, "GUICtrlSetOnEventBuffer")
    Else
    If $oOnEventDict.Exists(String($controlID)) Then $oOnEventDict.remove(String($controlID))
    EndIf
    EndFunc

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

    Func GUICtrlSetOnEventBuffer()
    MsgBox(0, "dfgd", "sdfsf")
    If Not $oOnEventDict.Exists(String(@GUI_CtrlId)) Then Return

    Local $Data = $oOnEventDict(String(@GUI_CtrlId))
    ;~ _ArrayDisplay($Data[1])
    ;~ MsgBox(0, "dfgd", VarGetType($Data))
    ;~ If $oOnEventDict.Item("Format") = 1 Then
    ;~ For $elem In $Data[1]
    ;~ $AList.Add($elem)
    ;~ ;~ MsgBox(0, "dsafsf", $elem)
    ;~ Next
    ;~ $AList.RemoveAt(0)
    ;~ Return Call($Data[0], $AList)
    ;~ EndIf
    Call($Data[0], $Data[1])
    EndFunc

    [/autoit]

    Das ist eine Erweiterung der GuiCtrlSetOnEvent Funktion.Ich möchte nur ein Schlüssel/Wert Paar zum Dictionary hinzufügen, aber ich bekomme den Fehler:
    "The requested action with this object has failed"
    Wenn ich Zeile 33 auskommentiere geht es!

    Hat jemand ne idee?

    Danke!

  • Ich würde sagen weil "test" Buchstaben sind und keine Zahlen und weil es als ID nicht vorhanden ist.

  • Sehr geehrter Käufer unseres Produktes,

    wir möchten Sie eindringlich bitten, sich mit der Betriebsanleitung unseres Produktes "Rolling Wheels" auseinanderzusetzen!
    Die Funktion "Bremsen" ist ein nicht unerheblicher Bereich zum einwandfreien Betrieb unseres Produktes.
    Wir raten Ihnen im Interesse der Gesundheit Ihrer und der von uns geschätzten Oma von weiteren Manipulationen der Bremsanlage dringend ab!
    Wenn Sie sich dennoch mit dieser Materie beschäftigen möchten, werden Sie sicher im Bereich "Tutorials" auf unserer Website fündig.
    Dazu sollten Sie den Unterpunkt "Objekte", welcher die Komponenten unserer Fahrräder beschreibt, durcharbeiten.
    Dann werden Sie sicherlich die Funktionen der einzelnen Objekte verstehen.
    Weiterhin viel Spass mit unserem Produkt!

    MfG
    Der Kundendienstspezialist