Problem bei Variablenzuweisung aus Array

  • Hi Leutz,

    Ich hab da mal wieder so ein Problem von dem ich nicht weiss wie ich es in den Griff bekomme.
    Das Forum habe ich durchsucht und ähnliche Fehler beschrieben gefunden.
    Ich konnte mir aber aus den Kommentaren keine funktionierende Lösung ableiten :(
    Hier zunächst mal der betroffene Ausschnitt aus der Source:

    [autoit]


    ; <Code um die GUI aufzubauen (nur ein schmaler Rand oben auf dem Desktop)>
    HotkeySet("{F1}", "Setpos") ; Hotkey für die Positionsfunktion
    ;<Schleife für die GUI>
    ; Variablendefinition
    Global $cp[5] = [0,0,0,0,0] ; $cp wird also zu einem Integerarray und mit Nullen vorbelegt.

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

    Func Setpos()
    <einige Codezeilen>
    $cp = GUIGetCursorInfo() ; $cp wird gemäß der Hilfe mit [Mausx,Mausy,Primärklick,Sekundärklick,Controlhandle] belegt
    GUICtrlSetData ($mx,$cp[0]+3) ; Übergabe an ein Label zur Anzeige
    GUICtrlSetData ($my,$cp[1]+21); Übergabe an ein Label zur Anzeige
    <mehrCodezeilen>
    return $cp
    EndFunc

    [/autoit]

    Und diese Fehlermeldung bekomme ich manchmal - leider nicht regelmäßig :(

    [autoit]


    C:\Dokumente und Einstellungen\matze\Desktop\showme.au3 (483) : ==> Subscript used with non-Array variable.:
    GUICtrlSetData ($mx,$cp[0]+3)
    GUICtrlSetData ($mx,$cp^ ERROR

    [/autoit]

    So funktioniert das auf meinem Rechner zu 99% - auf dem meiner Frau läuft es aber zu 100% in den Fehler :(
    Das aktive Fenster ist dabei bspw. das von OutlookExpress

    Hat jemand nen Tipp für mich wie ich den Fehler beseitigen kann und wo genau der Hase im Pfeffer liegt :?:

    Danke
    themaze

    Einmal editiert, zuletzt von themaze (2. April 2008 um 18:09)

    • Offizieller Beitrag

    Dann ist die Funktion nicht erfolgreich, füge eine Fehlerauswertung ein:

    Code
    $cp = GUIGetCursorInfo() 
    If Not IsArray($cp) Then Exit MsgBox(0, '', 'Cursor-Info konnte nicht ermittelt werden)
    GUICtrlSetData ($mx,$cp[0]+3)


    Mist, die AutoIt-Code-Darstellung funzt grad nicht.

    Edit:
    Vielleicht drauf achten: "The mouse cursor position is successful only on an window created by a GUICreate. "
    Oder einfach mal versuchen, das Handle mit zu übergeben: $cp = GUIGetCursorInfo($Handle-GUI)

    Edit2:
    Verwende doch

    [autoit]

    #Include <WinAPI.au3>
    $cp = _WinAPI_GetCursorInfo()

    [/autoit]

    Damit solltest du keine Probleme haben.

  • Hallo Bugfix,

    Danke für die Tipps - das mit der Winapi werd ich gleich mal testen.

    Danke und viele Grüße

    Mathias