Letzte Zeile auslesen im Edit feld

  • Hi @all

    Wie kann ich nur die letzt zeile eines Edit feldes auslesen

    Problem habe ich hier

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    #include <Misc.au3>

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

    Global $hWnd
    Global $Befehle

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

    HotKeySet("{ENTER}","pressed")

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

    Global $Konsole = _Konsol_Create("Konsole","Test")
    ;=================================================================================================
    ; Function: _Konsol_Create
    ; Varibles: $title = Titel der Konsole
    ; $text = Text des Labels
    ; Author: SB
    ;=================================================================================================
    Func _Konsol_Create($title,$text)
    Dim $Befehle[5]
    Local $dll = DllOpen("user32.dll")
    Dim $hWnd[2]
    $Befehle[0] = "Zeit"
    $Befehle[1] = "Datum"
    $Befehle[2] = "Ip"
    $Befehle[3] = "PC-Name"
    $Befehle[4] = "Username"
    $hWnd[0] = GUICreate($title,500,300)
    GUISEtBkColor(0x000000)
    $hWnd[1] = GUICtrlCreateEdit("",0,0,500,300,BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL), 0)
    GUICtrlSETBKColor(-1,0x000000)
    GUICTrlSETColor(-1,0xDCDCDC)
    GUICtrlSEtFont(-1,10,400,17,"Georgia")
    GUISetState(@SW_SHOW)
    While 1
    Switch GUIGETMSG()
    Case -3
    GUISetState(@SW_HIDE,$hWnd[0])
    Exitloop
    EndSwitch
    WEnd
    Return $hWnd
    EndFunc
    Func pressed()
    $read = GUICTrlREad($hWnd[1])
    IF $read = "" Then
    GUICtrlSetData($hWnd[1],$read & @CRLF & @CRLF&"Bitte Text Eingeben"& @CRLF )
    Endif
    If $read = $Befehle[0] Then
    GUICtrlSetData($hWnd[1],$read & @CRLF & " " & @Hour & ":" & @Min & @CRLF & @Crlf )
    Endif
    EndFunc

    [/autoit]

    Da wenn schon ein mal enter gedrückt wurde , dann wird ja alles ausgelesen und alle befehle sind miteinander und antworten und leerzeilen

    Ich hoffe ihr könnt mir helfen

  • Das sollte dir helfen.. in Editfeldern wird auch mit CRLF gesplittet.

    [autoit]

    $String = "FirstLine" & @CRLF & "MiddleLine" & @CRLF & "LastLine"
    $Split = StringSplit($String, @CRLF)
    $uUbound = UBound($Split)
    MsgBox(0x40, "Last line is: ", $Split[$uUbound-1])

    [/autoit]
  • Ich würde das ganze Edit in einen Text schreiben und dann auslesen mit FileReadLine.
    Beim auslesen
    von
    FileReadLine ( filehandle [, line] )
    bei line -1 angeben,denn die letzte Zeile ist -1(laut Hilfedatei).

    Dont fuck the CPU unnessecary..

    • Offizieller Beitrag

    Schau dir das mal an :

    Spoiler anzeigen
    [autoit]

    #cs **************************************************************************

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

    Letzte Zeile auslesen im Edit feld

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

    http://www.autoit.de/index.php?page…1370#post111370

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

    #ce **************************************************************************

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

    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    #include <Misc.au3>

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

    Global $hWnd
    Global $Befehle

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

    HotKeySet("{ENTER}","pressed")

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

    Global $Konsole = _Konsol_Create("Konsole","Test")
    ;=================================================================================================
    ; Function: _Konsol_Create
    ; Varibles: $title = Titel der Konsole
    ; $text = Text des Labels
    ; Author: SB
    ;=================================================================================================
    Func _Konsol_Create($title,$text)
    Dim $Befehle[5]
    Local $dll = DllOpen("user32.dll")
    Dim $hWnd[2]
    $Befehle[0] = "Zeit"
    $Befehle[1] = "Datum"
    $Befehle[2] = "Ip"
    $Befehle[3] = "PC-Name"
    $Befehle[4] = "Username"
    $hWnd[0] = GUICreate($title,500,300)
    GUISEtBkColor(0x000000)
    $hWnd[1] = GUICtrlCreateEdit("",0,0,500,300,BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL), 0)
    GUICtrlSETBKColor(-1,0x000000)
    GUICTrlSETColor(-1,0xDCDCDC)
    GUICtrlSEtFont(-1,10,400,17,"Georgia")
    GUISetState(@SW_SHOW)
    While 1
    Switch GUIGETMSG()
    Case -3
    GUISetState(@SW_HIDE,$hWnd[0])
    Exitloop
    EndSwitch
    WEnd
    Return $hWnd
    EndFunc
    Func pressed()
    $iCount =_GUICtrlEdit_GetLineCount ($hWnd[1])
    $sLastLine= _GUICtrlEdit_GetLine($hWnd[1],$iCount -1)
    $read = GUICTrlREad($hWnd[1])

    IF $read = "" Then
    GUICtrlSetData($hWnd[1],$read & @CRLF & @CRLF&"Bitte Text Eingeben"& @CRLF )
    Endif
    If $sLastLine = $Befehle[0] Then
    GUICtrlSetData($hWnd[1],$read & @CRLF & " " & @Hour & ":" & @Min & @CRLF & @Crlf )
    Endif
    EndFunc

    [/autoit]
    • Offizieller Beitrag

    Geht doch auch mit ControlCommand:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    #include <Misc.au3>

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

    Global $hWnd
    Global $Befehle

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

    HotKeySet("{ENTER}", "pressed")

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

    Global $Konsole = _Konsol_Create("Konsole", "Test")
    ;=================================================================================================
    ; Function: _Konsol_Create
    ; Varibles: $title = Titel der Konsole
    ; $text = Text des Labels
    ; Author: SB
    ;=================================================================================================
    Func _Konsol_Create($title, $text)
    Dim $Befehle[5]
    Local $dll = DllOpen("user32.dll")
    Dim $hWnd[2]
    $Befehle[0] = "Zeit"
    $Befehle[1] = "Datum"
    $Befehle[2] = "Ip"
    $Befehle[3] = "PC-Name"
    $Befehle[4] = "Username"
    $hWnd[0] = GUICreate($title, 500, 300)
    GUISetBkColor(0x000000)
    $hWnd[1] = GUICtrlCreateEdit("", 0, 0, 500, 300, BitOR($ES_AUTOVSCROLL, $ES_WANTRETURN, $WS_VSCROLL), 0)
    GUICtrlSetBkColor(-1, 0x000000)
    GUICtrlSetColor(-1, 0xDCDCDC)
    GUICtrlSetFont(-1, 10, 400, 17, "Georgia")
    GUISetState(@SW_SHOW)
    While 1
    Switch GUIGetMsg()
    Case - 3
    GUISetState(@SW_HIDE, $hWnd[0])
    ExitLoop
    EndSwitch
    WEnd
    Return $hWnd
    EndFunc ;==>_Konsol_Create

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

    Func pressed()
    $read = ControlCommand($hWnd[0], '', $hWnd[1], 'GetLine', ControlCommand($hWnd[0], '', $hWnd[1], 'GetCurrentLine', ''))
    Switch $read
    Case ''
    GUICtrlSetData($hWnd[1], @CRLF, 1)
    Case 'zip'
    GUICtrlSetData($hWnd[1], @CRLF & 'ZIP-Command' & @CRLF, 1)
    Case Else
    GUICtrlSetData($hWnd[1], ' <- Syntax Error' & @CRLF, 1)
    EndSwitch
    EndFunc ;==>pressed

    [/autoit]
  • danke oscar

    Ich habe jetz schon das von ef_hacks verwendet und will es jetzt nicht mehr ändern weil es funktioniert