inputbox eingabe mit stringsplit zum array verarbeiten

  • Hi
    ich will über eine einzelne inputbox mehrere 3stellige Zahlen eingeben lassen.
    Diese sollen dann einzeln abgearbeitet werden.

    ich glaube mit Stringsplit den richtigen befehl gefunden zu haben... aber werd ihn wohl falsch angewendet haben.

    hab bis jetzt sowas gebastet....

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Array.au3>
    opt("wintitlematchmode",2)
    HotKeySet ("{F6}", "_exit")

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

    GUICreate("My GUI",300,160,8,150)
    $addroom = GUICtrlCreateInput("", 8,50,150)
    GUICtrlCreateLabel("use ',' as seperator",166,50)
    $gobtn = GUICtrlCreateButton("GO",100,80,70)
    GUISetState (@SW_SHOW)

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

    Func _go()

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

    Local $array = StringSplit($addroom,",",1) // Stringplit gibt laut docu ein array wieder,
    //in dem [0] die anzahl der strings wiedergibt
    Local $i
    Run("Notepad.exe")
    WinActivate("Note")
    WinWaitActive("Note")

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

    For $i = 0 to $array[0]
    ControlSend("Notepad","","Edit1",$array[$i]&@CR)
    Next
    EndFunc

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

    Func _exit ()
    ToolTip("EXIT")
    Sleep(800)
    Exit
    EndFunc

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $gobtn
    _go()

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

    EndSwitch
    Wend

    [/autoit]


    und wen wunderts.. es läuft nich... sonst würde ich hier nich son blöden thread machen :D

    Vielleicht hat ja jemand nen verbesserungsvorschlag was meine nutzung von stringsplit angeht oder
    sogar einen vorschlag das ganze eleganter zu bewaeltigen ?


    Besten Dank jedenfalls schonmal vorab

    Einmal editiert, zuletzt von Rag3 (3. Januar 2013 um 10:53) aus folgendem Grund: schreibfehler+ ausbesserung

  • Generell hast du mit StringSplit die richtige Funktion gefunden, ja.
    Allerdings ist eine Notepad-Automatisierung nicht sehr elegant. ;)
    Weiterhin solltest du auf eine Struktur in deinem Skript achten.
    Den Wert eines GUI-Control bekommst du über GUICtrlRead (GUICtrlRead($addroom), Zeile 14).
    Eine Variable, die du in einer For-Schleife verwendest, musst du nicht vorher deklarieren.

    Ach ja: In AutoIt kommentiert man nicht mit "//" wie in manchen anderen Sprachen, sondern mit ";". ;)

    lg chess

    Edit:
    Hier mal ein Beispiel, wie ich die Sache angehen würde:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>

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

    $sFile = "test.txt" ;Outputfile

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

    $hGUI = GUICreate("My GUI", 300, 160, 8, 150)
    $hAddRoom = GUICtrlCreateInput("", 8, 50, 150)
    $hGo = GUICtrlCreateButton("GO", 100, 80, 70)
    GUICtrlCreateLabel("Use ',' as seperator.", 166, 50)
    GUISetState()

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

    While 1
    $hMsg = GUIGetMsg()
    Switch $hMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hGo
    _Go()
    EndSwitch
    WEnd

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

    Func _Go()
    $aRooms = StringSplit(GUICtrlRead($hAddRoom), ",", 1)
    For $i = 1 To $aRooms[0]
    FileWrite($sFile, $aRooms[$i] & @CRLF)
    Next
    EndFunc ;==>_go

    [/autoit]
  • besten Dank Tiger :thumbup:

    mit GUICtrlRead laeufts wunderbar.

    naja das mit der notepadautomatisierung hab ich nur gemacht damit erstmal irgendwas macht.
    Den Code hab ich bloederweise erst im editor modus hier reingesetzt.. dann auf quellcode gewechselt und dann ... is ja auch egal :D

    werd das ganze die tage ma auf der arbeit in mein bisheriges kleines projekt einbauen.

    Danke