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
Tutorial: Dateien eines Ordners in Listview anzeigen
-
-
Nett
In der Forschleife brauchst du das Ubbonund nciht da _FileListToArray die anzahl in $array[0] abspeichert
also:Spoiler anzeigen
[autoit]#include <File.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>;Dann fangen wir mal an, unsere GUI zu bauen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$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)While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd;Viel Spass noch, und ich hoffe ihr habt was gelernt.
[/autoit] -
So geht's auch
-
@Prigrage
Ja geht schon der unterschied ist aber in der zeit deutlich zu erkennenUbbound 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>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>;Dann fangen wir mal an, unsere GUI zu bauen
[/autoit] [autoit][/autoit] [autoit]
$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 )GUISetState(@SW_SHOW);GUI Anzeigen (Gehört aber nicht zum Tutorial :D)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd;Viel Spass noch, und ich hoffe ihr habt was gelernt.
[/autoit] -
Hmm bei mir kommen folgende Zeiten raus
2.19469234218315
1.53790495719428 -
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.25335901629956aber 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
Vermutlich Anzahl der Prozessoren oder unterschiedliches System (AMD/Intel)?!
Bei mir sind die Werte auch deutlich niedriger:
0.512076255501747
0.423796879212302 -
Es kann auch am Arbeitsspeicher abhängen da ich nur 1GB habe
welche werte bekommst du ( Oscar ) wenn $files[0] oben ist
-
Es kann auch am Arbeitsspeicher abhängen da ich nur 1GB habe
Ich habe 1.9 GB Ram
-
- 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.