Warum funktioniert hotkeyset nicht?

  • Hi Leute,
    der Titel war etwas schwer zu entscheiden, da ich nicht weiss an was es liegt.
    Ich gebe euch mal ein Beispiel was nicht funktioniert / funktioniert:

    [autoit]


    $string = "a" & "b"
    $string = $string & "c"
    msgbox(0,"",$string)
    $string = $string & " hallo du"
    msgbox(0,"",$string)
    ;funktioniert, string ist "abc hallo du"

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

    ;string leeren
    $string = ""

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

    Func _x()
    $sting = $string & "x"
    HotKeySet("x")
    Send("x")
    HotKeySet("x", "_x")
    EndFunc

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

    HotKeySet("x", "_x")

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

    sleep(10000)
    ;ich drücke währnd er schläft ganz oft x

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

    msgbox(0,"",$string)
    ;string ist leer

    [/autoit]

    Ich will unbedingt wissen, warum der String am ende leer ist, obwohl ich oft x drücke ob groß oder klein ist völlig egal.
    Ich hoffe mein Problem ist verständlich wenn man sich den code durchließt.
    Hilfe wäre spitze! 8)

    edit: wer nicht ersehen kann für was die funktion ist:
    Die funktion ist dafür da den tastenschlag x abzufangen und dem string noch ein x hinten ranzumachen.

    mfG qon

    2 Mal editiert, zuletzt von qon (19. November 2007 um 18:14)

  • so sollte es gehen:

    Spoiler anzeigen
    [autoit]

    $string = "a" & "b"
    $string = $string & "c"
    msgbox(0,"",$string)
    $string = $string & " hallo du"
    msgbox(0,"",$string)
    ;funktioniert, string ist "abc hallo du"


    ;string leeren
    $string = ""



    Func _x()
    $sting = $string & "x"
    HotKeySet("{x}")
    Send("x")
    HotKeySet("{x}", "_x")
    EndFunc

    HotKeySet("{x}", "_x")

    sleep(10000)
    ;ich drücke währnd er schläft ganz oft x

    msgbox(0,"",$string)
    ;string ist leer

    [/autoit]
  • funktioniert auch nicht wirklich :( die klammern sind bei einem einzelnen buchstaben auch nicht wichtig, wenn ich eine msgbox in die funktion einbaue kommt diese msgbox ja.

    Also die funktion ist dafür da den tastenschlag x abzufangen und dem string noch ein x hinten ranzumachen.

    mfG

  • So gehts :) Schreibfehler sind schlimm $Sting IST NICHT $String

    Spoiler anzeigen
    [autoit]


    $string = "a" & "b"
    $string = $string & "c"
    msgbox(0,"",$string)
    $string = $string & " hallo du"
    msgbox(0,"",$string)
    ;funktioniert, string ist "abc hallo du"


    ;string leeren
    $string = ""



    Func _x()
    $string = $string & "x"
    HotKeySet("x")
    Send("x")
    HotKeySet("x", "_x")
    EndFunc

    HotKeySet("x", "_x")

    ;For $i =0 To 500
    sleep(10000)
    ;Next
    ;ich drücke währnd er schläft ganz oft x

    msgbox(0,"",$string)
    ;string ist leer

    [/autoit]
  • edit:
    THX progandy ich glaube ich hätte das ohne dich nie gemerkt :P
    edit2:
    Ich war auch am zweifeln das er keine hotkeys bei sleep nimmt, denn wenn ich ne msgbox in die func eingebaut hatte funzte es ja ^^

    2 Mal editiert, zuletzt von qon (19. November 2007 um 18:30)

  • Zitat

    Original von huggy
    Autoit nimmt während sleep() keine Hotkeys meines wissens


    Doch nimmt er^^

    Der Fehler liegt, denke ich, darin dass die Variable $string nicht Ausgabeparameter ist.
    Also die Funktion müsste lauten Func _x(ByRef $string) - blpß wie du das dann mit Hotkeys machen willst. Keine Ahnung^^.

  • nach Zeile 11 --> deine $string hat den Wert "" (leer)
    nach Zeile 16 --> deine neue Var heißt $sting, nicht $string und hat den Wert "x", während deine $string immer den alten Wert (leer) besitzt.

    Daher : Zeile 27 --> $string immer noch wie vor leer

    Hoffe es könnte helfen.
    MFG.