Tutorial: Dateien eines Ordners in Listview anzeigen

  • Hallo an alle, die noch AutoIt lernen.
    Ich stelle mein Tutorial mal hier rein.
    Es beinhaltet eigentlich nur das, was auch in der Überschrift steht.
    Einfach downloaden, durchlesen, lernen und selbst versuchen.
    Viel Spass :D

  • Nett
    In der Forschleife brauchst du das Ubbonund nciht da _FileListToArray die anzahl in $array[0] abspeichert
    also:

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    ;Dann fangen wir mal an, unsere GUI zu bauen ^^
    $Form1 = GUICreate("Form1", 394, 450, 193, 117)
    $ListView1 = GUICtrlCreateListView("Desktop Programme ", 0, 0, 393, 449)
    $files = _FileListToArray(@DesktopDir); Die Funktion _FileListToArray speichert die Liste aller dateien in dem Ordner in einem Array
    For $i = 0 To $files[0] ; Ich habe leider nicht Rausgefunden wozu es benötigt wird, aber wenn man nur §files schreibt ohne UBound,
    ; dann ist alles nur 55, und ohne -1 kommt ein Fehler in der Console
    GUICtrlCreateListViewItem($files[$i], $ListView1);Jetzt für jeden durchgang ein neues Item erstellen, deswsegen $files[$i], denn $i
    ;wird bei jedem Durchgang eine Zahl größer
    Next
    GUISetState(@SW_SHOW);GUI Anzeigen (Gehört aber nicht zum Tutorial :D)

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

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

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

    ;Viel Spass noch, und ich hoffe ihr habt was gelernt.

    [/autoit]
  • @Prigrage
    Ja geht schon der unterschied ist aber in der zeit deutlich zu erkennen

    Code
    $files[0] Methode:2.25000663492148
    Ubbound Methode:4.98890222081298

    Ubbound braucht mehr als doppelt so lange das macht sich bei vielen ordnerinhalten sehr stark zu bemerken
    nimm lieber $file[0]

    hier Zeit Test Script

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    ;Dann fangen wir mal an, unsere GUI zu bauen ^^
    $Form1 = GUICreate("Form1", 394, 450, 193, 117)
    $ListView1 = GUICtrlCreateListView("Desktop Programme ", 0, 0, 393, 449)
    $files = _FileListToArray(@DesktopDir); Die Funktion _FileListToArray speichert die Liste aller dateien in dem Ordner in einem Array
    $t = TimerInit()
    For $i = 0 To $files[0]
    GUICtrlCreateListViewItem($files[$i], $ListView1)
    Next
    ConsoleWrite(TimerDiff($t)&@CRLF )
    $ht = TimerInit()
    For $i = 0 To UBound($files) -1
    GUICtrlCreateListViewItem($files[$i], $ListView1)
    Next
    ConsoleWrite(TimerDiff($ht)&@Crlf )

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

    GUISetState(@SW_SHOW);GUI Anzeigen (Gehört aber nicht zum Tutorial :D)

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

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

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

    ;Viel Spass noch, und ich hoffe ihr habt was gelernt.

    [/autoit]
  • Das kann aber eig gar nich sein
    wie viele symbole sind bei dir aufm desktop evtl. ist es bei sehr wenig umgekehrt

    • Offizieller Beitrag

    "Wer misst, misst Mist!"
    Ein Sprichwort, was eine gewisse Berechtigung hat. Zum einen sind die Unterschiede hier so klein, dass man sie getrost vernachlässigen kann. Und zum anderen, sollte man (wenn man schon misst) immer auch die umgekehrte Messung vornehmen, um evtl. Nebeneffekte ausschliessen zu können. Bei mir ist die zweite For...Next-Schleife immer die Schnellere. Wenn ich also $files[0] nach unten packe, dann ist das schneller. Bei UBound unten ist UBound schneller.
    Also hat das Ganze wohl weniger mit dem Befehl zu tun, als viel mehr mit irgendwelchen Caches, die dabei benutzt werden.

  • Bei mir ist der unterschied höher wenn ubound unten ist dann ist es das ergebnis von oben
    und bei ubound oben ist ubound leicht schneller
    2.62240033300322
    2.25335901629956

    aber woran leigt es,dass das bei euch da untere schneller ist und bei mir nicht
    bei mir ist $file immer schneller
    oben doppelt unten um 0,4s
    ???

    • Offizieller Beitrag

    welche werte bekommst du ( Oscar ) wenn $files[0] oben ist

    Wie ich bereits schrieb, spielt es keine Rolle welche der beiden For...Next-Schleifen oben steht. Die Werte sind immer in dem Bereich, wie ich sie schon gepostet habe.
    Oben 0.5 und unten 0.4 Millisekunden.

    Aber abgesehen davon sollte die For-Schleife bei "1" beginnen und nicht bei "0", weil in $files[0] die Anzahl der Array-Elemente enthalten ist.