TAB als Hotkey per Schleife setzen ?

  • moin.

    In meinem Script möchte ich einige Hotkeys per Schleife in einer Funktion setzen ( Func _SetHotToggle() ), damit ich mich bei Änderungen daran nur um eine Stelle im Code kümmern muss.
    Dies klappt aber nur zum Teil: Die Zeile HotKeySet("{TAB}", "_KeyToggle") scheint nur zu funktionieren, wenn ich sie von Hand eingebe.

    Diese Zeile habe ich in meinem Beispiel deaktiviert, um das ungewünschte Verhalten zu demonstrieren. Die Zahlentasten aktivieren die Func _KeyToggle() wie gewollt, jedoch müsste ich für die TAB-Taste eine extra Zeile schreiben.
    -Das bringt mich zwar nicht um ... aber es macht mich einfach WAHNSINNIG :S !! Schließlich klappt es mit dem Zurücksetzen der Hotkeys in der Func _SetHotDefault() ja ohne Probleme ;( ...


    Es würde mich sehr freuen, wenn mir das jemand erklären könnte, oder vielleicht sogar eine Lösung bzw. Verbesserung dazu anbieten würde :/ Vielen Dank schonmal !!

    Dies ist nur eine gekürzte Variante meines Scripts:

  • Hi :)

    Dein Problem liegt darin, dass du For...In...Next nutzt und dann auf das Array zugreifst, als ob es eine Zahl wäre.

    Bei For $element In $array wird der Wert, der in dem Array steht in die Variable ($elem) gespeichert, hier also: "1", "2", "3", "4", "{TAB}", "{ALT}". Mich wunderts eher, dass du beim Array-Zugriff keinen Fehler bekommen hast...

    Im Code unten hab ich beide Methoden eingebaut, die Funktionieren: Entweder du arbeitest mit For...To...Next und nutzt die Variable als Zahl, oder du nimmst For...In...Next und verwendest den Wert direkt.

    Achtung: Mit For...In...Next darfst du das Array während des durchlaufens nur auslesen, aber nicht verändern!

    Du kannst Arrays direkt bei der deklaration auch initalisieren => mit den Werten füllen. Spart mehrere Zeilen Code und ist auch schneller, weil jedes _ArrayAdd bei jedem Aufruf das gesamte Array kopiert und dann den neuen Wert einträgt, was ziemlich langsam ist. Wird dir hier nicht auffallen, aber wenn du größere Datenmengen verarbeitest und schon vorher weißt, wie viele es sind: Erstell das Array direkt mit der richtigen Größe und trag nur noch die Werte ein.