Textdatei 1zu1 in ListBox einfügen

  • Da die Sufu mir nicht annähernd geholfen hat, geht es sich hier um folgendes:
    Eine Textdatei mit dem Inhalt

    Code
    Hallo
    
    
    blaaaaa
    HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
    
    
    ZEEE
    TUT

    soll in eine ListBox eingefügt werden. Was passiert? Es wird ein Eintrag gebildet, in dem Zeilenumbrüche und Tabs ignoriert werden und alles hintereinander steht. Das soll so nicht der Fall sein. EIn gutes Ergebnis bekommt man bei Labels, da macht er das richtig rein, allerdings habe ich da keine Scrollbalken.
    Könnt ihr mir sagen welche Methode helfen würde?

    MfG

    Einmal editiert, zuletzt von NoName (3. April 2009 um 15:13)

  • Ehm im Forum gebastelt und nicht getestet aber spontan würde ich das so machen:

    [autoit]

    For $i = 1 To _FileCountLines($file)
    _GUICtrlListBox_AddString($hwnd, FileReadLine($file, $i)
    Next

    [/autoit]

    Bei sehr großen Textdateien (hatte zb mal eine mit über 50 Tausend Wörtern) mache ich das so:
    1. Jedes Item hintereinander schreiben und mit einem Delimiter trennen (zB. "|")
    2.

    [autoit]


    $aData = FileRead($File)
    $aData = StringSplit($aData, "|")

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

    For $i = 1 To Ubound($aData) -1
    $aData[$i] = StringTrimLeft($aData[$i],1)
    _GUICtrlListBox_AddString($listbox, $aData[$i])
    Next

    [/autoit]

    Einmal editiert, zuletzt von ChaosKeks (2. April 2009 um 22:34)

  • Also deine erste Methode geht wunderbar. Die zweite nicht, da wird wieder alles in 1 Item geschrieben...

    Jetzt muss ich nurnoch wissen, wie ich solche Scrollbars einbaue^^ Bin schon am suchen...

  • Was ist eigentlich mit einer EditBox? Kannst du die nicht verwenden?

    Spoiler anzeigen
    [autoit]

    #include<EditConstants.au3>
    #include<GUIConstants.au3>
    $text = "Erste zeile .................. " & @CRLF & _
    "Zweite Zeile ................ " & @CRLF & _
    "Dritte Zeile . . . . . . . . . . . " & @CRLF & _
    "Vierte Zeile __ _ _ _ _ _ _ _ _ _"

    GUICreate("Edit")

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

    GUICtrlCreateEdit($text,10,10, 200, 100 , BitOR($GUI_SS_DEFAULT_EDIT, $ES_READONLY) )

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

    GUISetState()
    While 1
    If GUIGetMsg()=-3 Then Exit
    WEnd

    [/autoit]
  • Wegen des Scrolls, guck mal ind er Hilfe unter den Styles für Listen.


    Ja, habe ich natürlich, und da es gibt ja auch die Scrollbar für rauf/runter. Nur ich brauchte auch eine für links/rechts. Habe jetzt aber den Text in der Textdatei so gekürzt, dass nur noch rauf/runter nötig ist.

    Habe ich natürlich auch probiert, hatte da aber dieselben Probleme wie mit der Liste. Also er erkennt zwar Tabs, aber keine Zeilenumbrüche.

    Naja Thema ist gelöst, danke an alle^^

  • Die EditBox braucht als Zeilenumbruch @CRLF. Also muss du alle Zeilenumbrüche darauf anpassen:

    Spoiler anzeigen
    [autoit]

    Enum $NL_MAC, $NL_WIN, $NL_NIX
    Func _NewlineConv($text, $type=$NL_WIN)
    ; Prog@ndy
    Switch $type
    Case $NL_WIN
    If StringInStr($text,@LF) Then
    Return StringReplace(StringStripCR($text),@LF,@CRLF)
    Else
    Return StringReplace($text,@CR,@CRLF)
    EndIf
    Case $NL_MAC
    If StringInStr($text,@LF) Then
    Return StringReplace(StringStripCR($text),@LF,@CR)
    Else
    Return $text
    EndIf
    Case $NL_NIX
    If StringInStr($text,@LF) Then
    Return StringStripCR($text)
    Else
    Return StringReplace($text,@CR,@LF)
    EndIf
    Case Else
    Return SetError(1,0,$text)
    EndSwitch
    EndFunc

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

    $text = "Ein Text mit LF als Zeilentrennung" & @LF & "Nächste zeile"
    $text = _NewlineConv($text,$NL_WIN)

    [/autoit]
  • Ja es gibt ja $.._VSCROLL und $.._HSCROLL ( Weis net mehr was anstelle der .. kommt ^^ )

    $.._VSCROLL is für hoch/runter
    $.._HSCROLL für links/rechts