_FileListToArray richtig anwenden.

  • Hey,

    folgendes möchte ich gern machen:

    Ein Verzeichnis einlesen und die dort vorhandenen Dateien in einem ListView anzeigen.

    Mein Ansatz:

    Spoiler anzeigen
    [autoit]


    #include<GuiListView.au3>
    #include<GUIConstantsEx.au3>
    #include<ListViewConstants.au3>
    #Include <File.au3>
    #Include <Array.au3>

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

    ;Form1
    $Form1 = GUICreate("Aufnahmen", 1000, 700, 195, 112)

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

    ;Auswahl
    $ListView = GUICtrlCreateListView("Name | Pfad", 0, 20, 600, 300, $LVS_SHOWSELALWAYS)
    $red = GUICtrlCreateButton("Rot", 10, 400, 100, 60)
    GUICtrlSetBkColor($red, "0xFF0000")
    $green = GUICtrlCreateButton("Grün", 130, 400, 100, 60)
    GUICtrlSetBkColor($green, "0x006400")
    $yellow = GUICtrlCreateButton("Gelb", 250, 400, 100, 60)
    GUICtrlSetBkColor($yellow, "0xFFFF00")
    $blue = GUICtrlCreateButton("Blau", 370, 400, 100, 60)
    GUICtrlSetBkColor($blue, "0x0000FF")
    GUISetState(@SW_SHOW, $Form1)

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

    While 1
    $Msg = GUIGetMsg(1)
    Switch $Msg[0]
    Case $GUI_EVENT_CLOSE ; Fenster schließen
    Exit
    case $red

    $FileList=_FileListToArray("D:\Mp3\MP3s")
    If @Error=1 Then
    MsgBox (0,"","No Files\Folders Found.")
    Exit
    EndIf
    _ArrayDisplay($FileList,"$FileList") ;nur zur kontrolle
    MsgBox(1, "", $Filelist[5]) ;nur zur kontrolle
    For $i = 1 to $FileList[0]
    GUICtrlCreateListViewItem($Filelist[$i] , $ListView)
    Next
    EndSwitch
    Wend

    [/autoit]


    Ich habe aber Schwierigkeiten mit dem Rückgabewert des Arrays. Laut Hilfe sollte bei den default Einstellungen der Filename und das komplette Verzeichnis zurückgegeben werden (was eh komisch ist, ist ja ein dimensionales Array? aber naja mit Arrays hab ichs nicht so).
    Ich bräuchte auch beide Infos, da ich über den Pfad die Dateien über Shellexecute später aufrufen will.
    Laut msgbox und _ArrayDisplay wird aber nur der Filename zurückgegeben :(
    Dementsprechend wird der Listviewbox auch nur der Name und nicht die Pfad eingetragen.

    Beim setzen der flags bricht der Skript auch immer mit einem Fehler ab (zumal 0 eh richtig sein müsste).

    Jemand ne Idee?

    Gruß nuts

    • Offizieller Beitrag

    Einfach den Pfad in eine Variable packen und dann zusammen mit der jeweiligen Datei ausgeben:

    Spoiler anzeigen
    [autoit]

    ; ...
    ; ...
    Local $path = "D:\Mp3\MP3s\"
    While 1
    $Msg = GUIGetMsg(1)
    Switch $Msg[0]
    Case $GUI_EVENT_CLOSE ; Fenster schließen
    Exit
    case $red
    $FileList=_FileListToArray($path)
    If @Error Then
    MsgBox (0,"","No Files\Folders Found.")
    Exit
    EndIf
    ;~ _ArrayDisplay($FileList,"$FileList") ;nur zur kontrolle
    ;~ MsgBox(1, "", $Filelist[5]) ;nur zur kontrolle
    For $i = 1 to $FileList[0]
    GUICtrlCreateListViewItem($path & $Filelist[$i] , $ListView)
    Next
    EndSwitch
    Wend

    [/autoit]
  • Worin besteht das Problem, wenn du nur den Dateinamen bekommst und nicht den ganzen Pfad? Du benötigst den Pfad bei _FileListToArray also musst du ihn ja vorher definieren, am besten in einer Variable. Beim Aufrufen einfach die Variable + Filename benutzen.


    Oh mann, stimmt :D . Manchmal sieht man den Wald vor lauter Bäumen nicht ..

    Dann mach ich mal weiter mit dem Skript. Thx