StringSplit-Frage

  • HI,

    ich hab jetzt vor, ein Variable mit der Funktion StringSplit zu teilen.

    Jetzt hab ich bloß ein Problem, da das Trennzeichen ein TAB ist.
    Wie sag ich jetzt dem Prog, dass er diesen TAB als Trennzeichen hernehmen soll?


    Sammy254

  • danke für die hilfe

    hab aber noch ne frage:

    also ich hab was in $Edit1 reingeschrieben, Stringsplit teilt diesen text in eine Variable pro Zeile auf. und dann möchte ich, dass ein erneutes Stringsplit diese zeile erneut in zwei variablen aufteilt, wobei TAB das trennzeichen ist

    bis jetzt schaut der teil so aus, doch leider geht es nicht

    [autoit]


    $Zeilen = GUICtrlRead($Edit1)
    $Zeile = StringSplit($Zeilen, @LF)
    For $i = 1 To $Zeile[0]
    $Vokabel = StringSplit($Zeile[$i], @TAB)
    For $i = 1 To $Vokabel[0]
    Send($Vokabel[$i])
    Send("{TAB}")
    Next
    Next

    [/autoit]

    /edit

    was muss ich eigentlich für den tastendruck STRG+s eingeben?

    Einmal editiert, zuletzt von Sammy254 (1. Oktober 2006 um 16:14)

  • [autoit]

    #include <GUIConstants.au3>
    ; == GUI generated with Koda ==
    $Form1 = GUICreate("Vokabeln eingeben", 540, 441, 192, 125)
    $Edit1 = GUICtrlCreateEdit("", 0, 0, 537, 377)
    GUICtrlSetData($Edit1, "")
    $Button1 = GUICtrlCreateButton("Start", 224, 392, 75, 25, 0)
    GUISetState(@SW_SHOW)
    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $Button1
    GUISetState(@SW_HIDE)
    $Zeilen = GUICtrlRead($Edit1)
    $Zeile = StringSplit($Zeilen, @LF)
    Run("C:\HEUREKA\VOXYGB5\VOXY.EXE GB5")
    Sleep(2000)
    Send("Kevin")
    Send("{TAB}")
    Send("Kevin")
    Send("{ENTER}")
    MouseMove(408, 280)
    MouseClick("left")
    Sleep(500)
    Send("!d")
    Sleep(500)
    Send("{DOWN}")
    Send("{DOWN}")
    Sleep(500)
    Send("{ENTER}")
    For $i = 1 To $Zeile[0]
    $Vokabel = StringSplit($Zeile[$i], @TAB)
    Send("^n")
    Send($Vokabel[1])
    Send("{TAB}")
    Send($Vokabel[2])
    Send("^s")
    Sleep(1000)
    Next
    GUISetState(@SW_Show)
    EndSelect
    WEnd
    Exit

    [/autoit]

    mometan schaut mein programm so aus, doch wenn ich mehrere zeilen eingeb, ignoriert er einfach die erste zeile.

    woran kann das liegen?

    • Offizieller Beitrag

    Also bei mir funktionierts. Habe mal auskommentiert, was ich zum Test nicht brauche.
    Wenn du im Eingabefeld eingibst:
    "aa {TAB} bb {ENTER}
    cc {TAB} dd"
    (Für TAB im Eingabefeld mußt du STRG+TAB drücken.), dann kommt in der MsgBox
    bei Durchlauf 1: [1.]aa[2.]bb
    bei Durchlauf 2: [1.]cc[2.]dd

    Genau, wie es soll.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    ; == GUI generated with Koda ==
    $Form1 = GUICreate("Vokabeln eingeben", 540, 441, 192, 125)
    $Edit1 = GUICtrlCreateEdit("", 0, 0, 537, 377)
    GUICtrlSetData($Edit1, "")
    $Button1 = GUICtrlCreateButton("Start", 224, 392, 75, 25, 0)
    GUISetState(@SW_SHOW)
    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $Button1
    GUISetState(@SW_HIDE)
    $Zeilen = GUICtrlRead($Edit1)
    $Zeile = StringSplit($Zeilen, @LF)
    ;~ Run("C:\HEUREKA\VOXYGB5\VOXY.EXE GB5")
    ;~ Sleep(2000)
    ;~ Send("Kevin")
    ;~ Send("{TAB}")
    ;~ Send("Kevin")
    ;~ Send("{ENTER}")
    ;~ MouseMove(408, 280)
    ;~ MouseClick("left")
    ;~ Sleep(500)
    ;~ Send("!d")
    ;~ Sleep(500)
    ;~ Send("{DOWN}")
    ;~ Send("{DOWN}")
    ;~ Sleep(500)
    ;~ Send("{ENTER}")
    For $i = 1 To $Zeile[0]
    $Vokabel = StringSplit($Zeile[$i], @TAB)
    MsgBox(0,"","[1.]"&$Vokabel[1]&"[2.]"&$Vokabel[2])
    ;~ Send("^n")
    ;~ Send($Vokabel[1])
    ;~ Send("{TAB}")
    ;~ Send($Vokabel[2])
    ;~ Send("^s")
    ;~ Sleep(1000)
    Next
    ;~ GUISetState(@SW_Show)
    EndSelect
    WEnd
    Exit

    [/autoit]