Return-Befehle in ein Array mit-speichern

  • Hallo Autoit-Comm. :D

    Folgendes Problem tut sich mir auf...
    Und zwar, ich lese mittels:

    Code
    $rohText = StringSplit(GUICtrlRead($rohTextFeld), '', 2)


    aus einem Edit Feld den Inhalt aus, und packe diesen in einen Array.

    Nun direkt zu meiner Frage...
    Wie kann ich die "Return" Befehle die inerhalb des Klartextes sind, mit in den Array packen -Daich auch Zeilenumbrüche brauche?
    Im Prinzip mache ich eine Art
    "Verschlüsselung" (vom Prinzip her vergleichbar), ich brauche also
    unbedingt die RETURN Befehle, damit ich eben die Ausgabe exakt so
    gestalten kannn, wie eine 1:1 "Übersetzung".

    Gibt es da eine Möglichkeit?
    Für Hilfe wäre ich sehr dankbar :)

    Schönen Abend noch,
    JokeCracker

    Einmal editiert, zuletzt von Jok[e]Cracker (14. Januar 2013 um 19:50)

  • Return? Also Zeilenumbrüche like @CRLF?
    Dir sind bei dir bereits im Array enthalten.

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

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

    Global $s_String = 'Das ist ein Text,' & @CRLF & 'der über zwei Zeilen geht.'
    Global $a_Split = StringSplit($s_String, '', 2)

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

    _ArrayDisplay($a_Split)

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

    For $i = 0 To UBound($a_Split) - 1
    ConsoleWrite($a_Split[$i])
    Next

    [/autoit]
  • Funktioniert doch schon.
    Was du noch machen kannst, ist das @CR aus dem @CRLF zu entfernen, damit nur noch ein Symbol (@LF) übrigbleibt.
    Angezeigt werden kann da ja nur ein Kästchen.

    Beim nächsten Mal poste ein lauffähiges Beispiel zum Testen, und nicht nur eine Zeile!


    [autoit]

    #include <Array.au3>
    #include <EditConstants.au3>

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

    GUICreate("", 500, 350)
    $rohTextFeld = GUICtrlCreateEdit("", 10, 10, 480, 300, $ES_WANTRETURN)
    $nBtn = GUICtrlCreateButton("Lese in Array", 10, 320, 480, 20)

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

    GUISetState()

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

    Global $iMsg

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

    Do
    $iMsg = GUIGetMsg()
    If $iMsg = $nBtn Then
    $rohText = StringSplit(StringReplace(GUICtrlRead($rohTextFeld), @CRLF, @LF), '', 2)
    _ArrayDisplay($rohText)
    EndIf
    Until $iMsg = -3

    [/autoit]
  • Das ging aber schnell :)

    Danke für die Antworten :D

    Ja, ich habe mich schon gewundert, warum bei der Array Ausgabe direkt 2 Leere "Kästchen" angezeigt werden.

    Was bringt mir denn dieses "@LF"? Ich habe es mir ind der AutoIt Hilfe einmal durchgelesen, verstehe aber den Unterschied nicht...


    Ich vergaß:
    Noch eine Frage, und zwar, wenn ich nun eine Abfrage machen möchte wie frage ich nach, ob das Array an der i-ten Stelle eine Return Eingabe hat?

  • Also:
    Es gibt zwei Zeichen für einen Zeilenumbruch (Oder Return, wie du es nennst): CR und LF.
    Das steht für Carriage Return und Line Feed.
    Wenn du also in einem Edit-Feld ENTER drückst, werden die ASCII-Codes (Wenn du nicht weißt, was das ist -> Google) 10 & 13 gesendet. Dabei steht der ASCII-Code 10 für Line Feed und der ASCII-Code 13 für Carriage Return.
    Windows interpretiert diese beiden Zeichen zusammen als Zeilenumbruch (Dein Return).
    Das hat mitunter historische Gründe. Windows ist auch eines der wenigen Systeme, welche CRLF als Zeilentrenner nutzen.
    Sonst wird nur LF (Linux, Unix) oder CR (Mac OSX) genutzt.

    Daher steht dein @CR, @LF oder gar @CRLF für nichts anderes, als den Zeilenumbruch selber. ;)

    Und wie du schaust, wo dein String einen Zeilenumbruch hat?

    [autoit]


    $iPos = StringInStr($sText, @CRLF)

    [/autoit]

    chess

  • Ein bisschen Wissen darüber habe ich ja schon, ASCII Codes kenne ich ;)
    Aber mal wieder was gelernt :D

    Gut, dann ist das auch gelöst :D
    Danke^^