mehrere arrays in ein listview

  • ich habe Folgenden code

    [autoit]

    $hListView = GUICtrlCreateListView('Dateiname|Pfad', 10, 375, 350, 200)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES_FUNC')
    WinSetOnTop($hwnd, '', 1)
    $return = _GetFilesFolder_Rekursiv("C:\Users\Puclic\Music\Winamp\Einzelne Lieder","*",0)
    _ArrayDisplay($return)
    GUICtrlCreateListViewItem($return & "|" , $hListView)

    [/autoit]

    und mit _arraydisplay kommt das
    [0]|30
    [1]|C:\Users\Public\Music\Winamp\Einzelne Lieder\AlbumArtSmall.mp3
    ...

    wie kann ich angeben dass er alle 30 (oder auch mehr/weniger) elemente anzeigen soll, das der eintrag bei pfad angezeigt wird und der name bei name?
    vg,
    JuraX

    Einmal editiert, zuletzt von JuraX (28. Januar 2010 um 21:06)

  • Hier ein Ansatz:

    [autoit]

    #include <Array.au3>

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

    $Text = "C:\Users\Public\Music\Winamp\Einzelne Lieder\AlbumArtSmall.mp3"

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

    $Split = StringSplit($Text, "\")
    _ArrayDisplay($Split)
    $Dateiname = $Split[$Split[0]]
    $Pfad = StringTrimRight($Text, StringLen($Dateiname))
    MsgBox(0, "Dateiname und Pfad", "Dateiname: " & $Dateiname & @CRLF & "Pfad: " & $Pfad)

    [/autoit]

    Wenns nicht hilft, fragen.

    Edit: probier das mal.

    [autoit]

    #include <GUIConstantsEx.au3>

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

    Global $return[6]

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

    $return[0] = 5
    $return[1] = "C:\Users\Public\Music\Winamp\Einzelne Lieder\Beispiel1.mp3"
    $return[2] = "C:\Users\Public\Music\Winamp\Einzelne Lieder\Beispiel2.mp3"
    $return[3] = "C:\Users\Public\Music\Winamp\Einzelne Lieder\Beispiel3.mp3"
    $return[4] = "C:\Users\Public\Music\Winamp\Einzelne Lieder\Beispiel4.mp3"
    $return[5] = "C:\Users\Public\Music\Winamp\Einzelne Lieder\Beispiel5.mp3"

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

    $Gui = GUICreate("Gui", 200, 200)
    $hListView = GUICtrlCreateListView('Dateiname|Pfad', 10, 10, 180, 180)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    GUISetState()

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

    For $i = 1 To $return[0]
    $dateiname = StringSplit($return[$i], "\")
    $dateiname = $dateiname[$dateiname[0]]
    GUICtrlCreateListViewItem($dateiname & "|" & $return[$i], $hListView)
    Next

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von m-obi (28. Januar 2010 um 21:43)

  • Mein Vorschlag:

    Spoiler anzeigen
    [autoit]


    $hListView = GUICtrlCreateListView('Dateiname|Pfad', 10, 375, 350, 200)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES_FUNC')
    WinSetOnTop($hwnd, '', 1)
    $return = _GetFilesFolder_Rekursiv("C:\Users\Puclic\Music\Winamp\Einzelne Lieder", "*", 0)
    _ArrayDisplay($return)
    For $i = 0 To UBound($return) - 1
    $replace = StringReplace($return[$i], "\", "|", -1)
    GUICtrlCreateListViewItem($replace, $hListView)
    next

    [/autoit]
  • Ich finde nuts's besser, nur falschrum. Du hast Pfad und Dateiname vertauscht, musste nur wieder tauschen.

    Und ich würde

    [autoit]

    For $i = 1 To $return[0]

    [/autoit]

    nehmen, ist kürzer und du musst mit 1 anfangen, sonst macht er die Anzahl der Einträge auch mit rein.

  • Danke!
    (wie kann ichs umdrehen?)
    ich hab von listview keine Ahnung

    Einmal editiert, zuletzt von JuraX (28. Januar 2010 um 22:12)

  • Meins geht auch in 2 Zeilen

    [autoit]

    For $i = 1 To $return[0]
    $dateiname = StringSplit($return[$i], "\")
    GUICtrlCreateListViewItem($dateiname[$dateiname[0]] & "|" & $return[$i], $hListView)
    Next

    [/autoit]


    Willst du eigentlich wirklich den Dateinamen mit im Pfad drin haben?

  • Hm aso, demnach führt mein Weg nicht zum Ziel.
    Stringreplace hätte sich für die Darstellung Pfad & Dateiname in dieser Reihenfolge angeboten.

    Noch ein Vorschlag, Stringsplit könnte aber hier schon schneller sein:

    [autoit]

    For $i = 1 To $return[0]
    $dateiname = StringtrimLeft($return[$i], StringInStr($return[$i], "\", 0,-1))
    GUICtrlCreateListViewItem($dateiname &"|" & $return[$i], $hListView)
    Next

    [/autoit]