Elendig langen String mit Leerzeichen nach jedem 6. zeichen versehen

  • [autoit]


    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.2.0
    Author: myName

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    ; Script Start - Add your code below here

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

    ;[includes]
    #include <GUIConstantsEx.au3>
    #include <GuiStatusBar.au3>

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

    $mainWindow = GUICreate("Elemgen v1.0.0 - Tool to read out elements.data for PW, ES and JD (and maybe KF too) - made by KE$$", 800, 600, -1, -1)
    ;~ $fileWindow = GUICreate("", 800, 600, 0, 0)

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

    $datei = GUICtrlCreateMenu("Datei")
    $openFile = GUICtrlCreateMenuItem("Open...", $datei)

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

    $editField = GUICtrlCreateEdit("", 0, 0, 800, 557)

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

    $StatusBar1 = _GUICtrlStatusBar_Create($mainWindow)
    _GUICtrlStatusBar_SetSimple($StatusBar1)
    _GUICtrlStatusBar_SetText($StatusBar1, " This is Beta!")
    _GUICtrlStatusBar_SetMinHeight($StatusBar1, 20)

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

    GUISetState(@SW_SHOW)

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

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

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

    Case $openFile
    $elementsDataFile = FileOpen(@ScriptDir&"\elements.data", 4)
    $eleDataFileRead = FileRead($elementsDataFile, FileGetSize(@ScriptDir&"\elements.data"))
    $0xWeg = StringTrimLeft($eleDataFileRead, 2)
    GUICtrlSetData($editField, $0xWeg)
    FileClose($elementsDataFile)

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

    EndSwitch
    WEnd

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

    Jo, ich würde jetz gerne noch den String der in der variablen $0xWeg gespeichert ist um ein paar leerzeichen erweitern... genauer gesagt nach jedem 6. zeichen im string
    Beispiel:
    String: 003100300000524800
    soll werden: 003100 300000 524800

    der originalstring ist um einiges länger

    [autoit]

    MsgBox(0, "", StringLen($0xWeg))

    [/autoit]

    lieferte 57226352 Zeichen

    Einmal editiert, zuletzt von Karill Endusa (1. Januar 2010 um 21:34)

  • [autoit]

    Local $out = ""
    For $i = 1 To StringLen($0xWeg) Step +6
    $out &= StringMid($oxWeg, $i, 6) & " "
    Next
    $0xWeg = $out

    [/autoit]

    greetz:)

    edit: Ups stimmt;) Beim 2. Mal hatts geklappt..

    2 Mal editiert, zuletzt von syne (1. Januar 2010 um 21:58)

    • Offizieller Beitrag
    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiStatusBar.au3>
    Global $TempString = ""
    $mainWindow = GUICreate("Elemgen v1.0.0 - Tool to read out elements.data for PW, ES and JD (and maybe KF too) - made by KE$$", 800, 600, -1, -1)
    $fileWindow = GUICreate("", 800, 600, 0, 0)

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

    $datei = GUICtrlCreateMenu("Datei")
    $openFile = GUICtrlCreateMenuItem("Open...", $datei)

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

    $editField = GUICtrlCreateEdit("", 0, 0, 800, 557)

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

    $StatusBar1 = _GUICtrlStatusBar_Create($mainWindow)
    _GUICtrlStatusBar_SetSimple($StatusBar1)
    _GUICtrlStatusBar_SetText($StatusBar1, " This is Beta!")
    _GUICtrlStatusBar_SetMinHeight($StatusBar1, 20)

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

    GUISetState(@SW_SHOW)

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

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

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

    Case $openFile
    $elementsDataFile = FileOpen(@ScriptDir&"\elements.data", 4)
    $eleDataFileRead = FileRead($elementsDataFile, FileGetSize(@ScriptDir&"\elements.data"))
    $0xWeg = StringTrimLeft($eleDataFileRead, 2)
    For $i = 1 To Ceiling(StringLen($0xWeg) / 6)
    $TempString &= StringLeft($0xWeg, 6) & " "
    $0xWeg = StringTrimLeft($0xWeg, 6)
    Next

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

    GUICtrlSetData($editField, $TempString)
    FileClose($elementsDataFile)

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

    EndSwitch
    WEnd

    [/autoit]


    Edit: Zwar viel zu Spät, weil ich Essen war aber ich hatte es sowieso fertig.

    Edit2: Bearbeite mal deinen Code syne ;)

    • Offizieller Beitrag

    Hiermit sollte es erheblich schneller gehen (und nur eine Zeile Code :P)

    [autoit]

    $s = '1234567890123456789012345678901234567890'
    ConsoleWrite(StringRegExpReplace($s, '.{1,6}', ' $0') & @CRLF)

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

    ; EDIT - in der ersten Variante ist noch ein Leerzeichen VOR dem String, besser so:
    ConsoleWrite(StringTrimLeft(StringRegExpReplace($s, '.{1,6}', ' $0'), 1) & @CRLF)

    [/autoit]