Sortierung

  • Gunten Morgen!

    Ich habe ja dieses kleine Dateibrowser script.

    Funktioiert soweit alles so.
    Nur ist die Sortierung in der ListView alphabetisch.
    Das sieht aus wie ein großes Chaos.


    Ich möchte aber gerne das es nach Ornern und Dateien Sortiert ist.

    Wüsste da jemand von euch wie ich so eine Sotrierung hinbekomme?

    Spoiler anzeigen
    [autoit]


    ;########## START ##########
    #cs
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    + BrowseNET BETA 2 +
    + +
    + Version: 0.7.9 BETA +
    + +
    + Autor: Kay Stratmann +
    + mit freundlicher Unterstützung von http://www.autoit.de +
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    #ce

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

    ;////////// GLOBALS \\\\\\\\\\
    Global Const $NM_FIRST = 0
    Global Const $NM_DBLCLK = -3
    ;////////// ENDE \\\\\\\\\\

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

    ;////////// HOTKEYS \\\\\\\\\\
    HotKeySet("{F1}", "_help")
    ;////////// ENDE \\\\\\\\\\

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

    ;////////// INCLUDES \\\\\\\\\
    #include <GUIConstants.au3>
    #include <GuiListView.au3>
    #Include <process.au3>
    #include <string.au3>
    ;////////// ENDE \\\\\\\\\\

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

    ;////////// OPTIONS \\\\\\\\\\
    Opt("GUIOnEventMode", 1)
    ;////////// ENDE \\\\\\\\\\

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

    ;////////// MAINSETTINGS \\\\\\\\\
    $datei1 = @ScriptDir & "\ordner.db"
    $Masterpfad = IniRead(@Scriptdir & "\konfiguration.ini", "Masterpfad", "Value", @Scriptdir & "\")
    $pfad = $masterpfad
    $autostart = IniRead(@ScriptDir & "\konfiguration.ini", "Autostart", "VALUE", "4")
    $pass_read = IniRead(@ScriptDir & "\konfiguration.ini", "Passwort", "Value", "")
    $encrypt = _StringEncrypt(0, $pass_read, "last")
    ;////////// ENDE \\\\\\\\\\

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

    ;////////// GUIS \\\\\\\\\\
    ;~~~~~~~~~~ MAINGUI ~~~~~~~~~~~
    $MAIN_GUI = GUICreate("BrowseNET", 200, 440, 0, 0) ;ERSTELLT DIE GUI
    GUISetHelp("BrowseNET.exe")
    $search = FileFindFirstFile($pfad & "*.*")
    $LIST_FOLDER = GUICtrlCreateListView("Scripte", 0, 0, 200, 410, $LVS_NOCOLUMNHEADER);ERSTELLT EINE LISTE
    _GUICtrlListViewSetColumnWidth($LIST_FOLDER, 0, 180) ; Breite = 200 minus Scrollbalken
    GUIRegisterMsg(0x004E, "_DoubleClickOnListView") ;DOPPELKLICK FUNKTION
    $main_btn1 = GUICtrlCreateButton("Zurück zum Startpfad", 37, 415, 120, 20) ;ERSTELLT EINEN BUTTON
    GUICtrlSetOnEvent($main_btn1, "_back")
    GUISetOnEvent($GUI_EVENT_CLOSE, "_exit") ;CLOSE BUTTON
    GUISetState(@SW_Show) ;SETZT DIE GUI AUF SHOW
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;~~~~~~~~~~ DATEI ~~~~~~~~~~
    $DATEI_MENUE = GUICtrlCreateMenu("Datei") ;ERSTELLT DAS MENUE
    $DATEI_ITEM1 = GUICtrlCreateMenu("Export", $Datei_Menue) ;ERSTELLT EIN ITEM
    $Export_ITEM1 = GUICtrlCreateMenuitem("Textdatei", $Datei_Item1) ;TEXTDATEI
    GUICtrlSetOnEvent($Export_ITEM1, "_export_text") ;EXPORT TEXT
    $Export_ITEM2 = GUICtrlCreateMenuitem("Exceldatei", $Datei_Item1) ;EXCELDATEI
    GUICtrlSetOnEvent($Export_item2, "_export_excel")
    $DATEI_ITEM2 = GUICtrlCreateMenuitem("Beenden", $DATEI_MENUE) ;ERSTELLT EIN ITEM
    GUICtrlSetOnEvent($DATEI_ITEM2, "_exit") ;BEENDEN
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;~~~~~~~~~~ OPTIONEN ~~~~~~~~~~
    $OPTION_MENUE = GUICtrlCreateMenu("Optionen") ;ERSTELLT DAS MENUE
    $OPTION_ITEM1 = GUICtrlCreateMenuitem("Einstellungen", $OPTION_MENUE) ;ERSTELLT EIN ITEM
    GUICtrlSetOnEvent($OPTION_ITEM1, "_pw_gui") ;OPTIONEN GUI
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;~~~~~~~~~~ INHALT LADEN ~~~~~~~~~~
    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    GUICtrlCreateListViewItem($file, $LIST_FOLDER)
    WEnd

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

    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;~~~~~~~~~~ OPTIONGUI ~~~~~~~~~~
    $OPT_GUI = GUICreate("Optionen", 200, 195) ;ERSTELLT DIE GUI
    GUICtrlCreateLabel("Masterpfad", 10, 10, 100, 20) ;ERSTELLT EIN LABEL
    GUICtrlCreateLabel("INFO: Die Pfadangabe muss immer mit einem ''\'' enden!", 10, 160, 180, 50) ;ERSTELLT EIN LABEL
    GUICtrlCreateLabel("Passwort", 10, 60, 75, 20) ;ERSTELLT EIN LABEL
    $opt_input1 = GUICtrlCreateInput($Masterpfad, 10, 30, 180, 20) ;ERSTELLT EIN INPUTFELD
    $opt_input2 = GUICtrlCreateInput($encrypt, 10, 80, 180, 20) ;ERSTELLT EIN INPUTFELD
    $checkbox = GUICtrlCreateCheckbox("Autostart", 15, 105) ;CHECKBOX
    GUICtrlSetState(-1, $autostart)
    $opt_btn1 = GUICtrlCreateButton("OK", 10, 135, 75, 20) ;ERSTELLT EINEN BUTTON
    GUICtrlSetOnEvent($opt_btn1, "_Opt_save") ;EINSTELLUNGEN SPEICHERN
    $opt_btn2 = GUICtrlCreateButton("Abbrechen", 115, 135, 75, 20) ;ERSTELLT EIEN BUTTON
    GUICtrlSetOnEvent($opt_btn2, "_opt_hide") ;ABBRECHEN
    GUISetOnEvent($GUI_EVENT_CLOSE, "_opt_hide") ;BEENDEN
    GUISetState(@SW_Hide, $OPT_GUI) ;SETZT DIE GUI AUF HIDE
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;~~~~~~~~~~ PASSWORTGUI ~~~~~~~~~~
    $pw_gui = GUICreate("Passwort", 200, 70) ;ERSTELLT DIE GUI
    $pw_input = GUICtrlCreateInput("", 10, 10, 180, 20, $ES_PASSWORD) ;INPUTFELD
    $pw_btn1 = GUICtrlCreateButton("Login", 10, 40, 75, 20) ;BUTTON
    GUICtrlSetOnEvent($pw_btn1, "_pw_login") ;LOGIN
    $pw_btn2 = GUICtrlCreateButton("Abbrechen", 115, 40, 75, 20) ;BUTTON
    GUICtrlSetOnEvent($pw_btn2, "_pw_hide") ;ABBRECHEN
    GUISetOnEvent($GUI_EVENT_CLOSE, "_pw_hide") ;BEENDEN
    GUISetState(@SW_Hide, $pw_gui) ;SETZT DIE GUI AUF HIDE
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;////////// ENDE \\\\\\\\\\

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

    ;////////// WHILESCHLEIFE \\\\\\\\\\
    While 1 ;BEGINN DER SCHLEIFE
    Sleep(100) ;100MS PAUSE
    WEnd ;SCHLEIFENENDE
    ;////////// ENDE \\\\\\\\\\

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

    ;////////// FUNKTIONEN \\\\\\\\\\
    ;~~~~~~~~~~ HELP ~~~~~~~~~~
    FUNC _help()
    _RunDOS("start " & @ScriptDir & "\Readme.txt")
    EndFunc
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;~~~~~~~~~~ EXPORT ~~~~~~~~~~
    Func _export_text()
    $exp_txt = FileSaveDialog("Export", Default, "(*.txt)", 16, "Export.txt")
    If @error Then
    ;
    Else
    If FileExists($exp_txt) Then
    FileDelete($exp_txt)
    EndIf
    $filesearch = FileFindFirstFile($pfad & "*.*")
    While 1
    $filefind = FileFindNextFile($filesearch)
    If @error Then ExitLoop
    FileWriteLine($exp_txt, $filefind)
    FileClose($exp_txt)
    WEnd
    _RunDOS("start " & $exp_txt)
    EndIf
    EndFunc

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

    Func _export_excel()
    $exp_xls = FileSaveDialog("Export", Default, "(*.xls)", 16, "Export.xls")
    If @error Then
    ;
    Else
    If FileExists($exp_xls) Then
    FileDelete($exp_xls)
    EndIf
    $filesearch = FileFindFirstFile($pfad & "*.*")
    While 1
    $filefind = FileFindNextFile($filesearch)
    If @error Then ExitLoop
    FileWriteLine($exp_xls, $filefind)
    FileClose($exp_xls)
    WEnd
    _RunDOS("start " & $exp_xls)
    EndIf
    EndFunc
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;~~~~~~~~~~ PASSWORT~~~~~~~~~~
    Func _pw_gui()
    GUISetState(@SW_SHOW, $pw_gui) ;SETZT DIE GUI AUF SHOW
    EndFunc

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

    Func _pw_hide()
    GUISetState(@SW_HIDE, $pw_GUI) ;SETZT DIE GUI AUF HIDE
    EndFunc

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

    Func _pw_login()
    $pw_input_read = GUICtrlRead($pw_input)
    If $pw_input_read == $encrypt Then
    GUISetState(@SW_SHOW, $opt_gui) ;SETZT DIE GUI AUF SHOW
    GUISetState(@SW_HIDE, $pw_gui) ;SETZT DIE GUI AUF HIDE
    Else
    MsgBox(0, "EINGABE FALSCH", "Das Passwort welches Sie eingegeben haben ist nicht korrekt!") ;MSGBOX
    EndIf
    EndFunc
    ;~~~~~~~~~~ ENDE ~~~~~~~~~
    ;~~~~~~~~~~ OPTIONEN ~~~~~~~~~~

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

    Func _opt_hide()
    GUISetState(@SW_HIDE, $opt_GUI) ;SETZT DIE GUI AUF HIDE
    EndFunc

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

    Func _opt_save()
    $opt_input1_read = GUICtrlRead($opt_input1) ;ERSTELLT EIN INPUTFELD
    $opt_input2_read = GUICtrlRead($opt_input2)
    IniWrite(@Scriptdir & "\konfiguration.ini", "Masterpfad", "Value", $opt_input1_read);SCHREIBT IN EINE INIDATEI
    IniWrite(@ScriptDir & "\konfiguration.ini", "Autostart", "Value", GUICtrlRead($Checkbox))
    $crypt = _StringEncrypt(1, $opt_input2_read, "last")
    IniWrite(@ScriptDir & "\konfiguration.ini", "Passwort", "Value", $crypt)
    If GUICtrlRead($checkbox) = "4" Then
    RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "BrowseNET")
    EndIf
    If GUICtrlRead($checkbox) = "1" Then
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "BrowseNET", "REG_SZ", @ScriptFullPath)
    EndIf
    MsgBox(0, "Einstellungen", "Die änderungen werden erst nach einem Neustart des Programms in kraft treten")
    GUISetState(@SW_HIDE, $OPT_GUI)
    EndFunc
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;~~~~~~~~~~ ZURÜCK ~~~~~~~~~~
    Func _back()
    $pfad = $Masterpfad
    $filesearch2 = FileFindFirstFile($pfad & "*.*")
    _GUICtrlListViewDeleteAllItems($LIST_FOLDER)
    While 1
    $filefind2 = FileFindNextFile($filesearch2)
    If @error Then ExitLoop
    GUICtrlCreateListViewItem($filefind2, $LIST_FOLDER)
    WEnd
    EndFunc
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;~~~~~~~~~~ BEENDEN ~~~~~~~~~
    Func _exit()
    ;IniWrite(@Scriptdir & "\konfiguration.ini", "Pfad", "Value", "I:\DV\dv3\scripte\ordner\")
    Exit ;BEENDEN
    EndFunc
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;////////// ENDE \\\\\\\\\\

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

    ;////////// EXTERN [AUTOIT.DE] \\\\\\\\\\
    ;~~~~~~~~~~ DOUBLECLICK ~~~~~~~~~~
    Func _DoubleClickOnListView($hWndGUI, $MsgID, $wParam, $lParam);Die Eigentliche Funktion
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3); Checkt wie das EVENT aussieht
    If $wParam = $List_Folder Then;Wenn der Klick auf das ListView ging..
    If $event = $NM_DBLCLK Then;.. Wenn es ein DoppelKlick war
    ; Hier kommt hin was er machen soll:
    $read_select = GUICtrlRead(GUICtrlRead($LIST_FOLDER))
    If StringInStr(FileGetAttrib($pfad & $read_select),"D") Then
    IniWrite(@Scriptdir & "\konfiguration.ini", "Pfad", "Value", $pfad & $read_select & "\")
    $pfad = IniRead(@Scriptdir & "\konfiguration.ini", "Pfad", "Value", "")
    $filesearch = FileFindFirstFile($pfad & "*.*")
    _GUICtrlListViewDeleteAllItems($LIST_FOLDER)
    While 1
    $filefind = FileFindNextFile($filesearch)
    If @error Then ExitLoop
    GUICtrlCreateListViewItem($filefind, $LIST_FOLDER)
    WEnd
    Else
    _RunDOS("Start " & $pfad & $read_select)
    EndIf
    EndIf
    EndIf
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;////////// ENDE \\\\\\\\\\

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

    ;########## ENDE ##########

    [/autoit]
    • Offizieller Beitrag

    Schau mal hier: Dateien / Ordner rekursiv lesen nach.
    Vielleicht bringt dich das weiter.

    Edit:
    Oder willst du erst nur Ordner und dann nur Dateien anzeigen, oder wie?


    Edit:
    Sortiere doch beim Auslesen (FindNextFile) gleich ob Datei oder Ordner. Die Arrays sind hier bei Index "0" leer kannst ja beim zuweisen der Einträge dort einen Zähler mitführen für Anzahl Elemente:

    [autoit]

    #include <array.au3>
    Dim $arFolder[1], $arFile[1]
    If StringInStr(StringRight($file,5),".") Then ; ==> Datei
    _ArrayAdd($arFile,$file)
    Else
    _ArrayAdd($arFolder,$file)
    EndIf

    [/autoit]


    Am Ende bestückst du dein Listview mit den Daten aus den Arrays, erst die Ordner, dann die Dateien.

  • Das versteh ich nun nicht so ganz Sorry.

    Also ich will das es so wie Explorer sortiert ist.
    Erst komme die ganzen Ordner und dann kommen die ganzen anderen Dateien.

    Aber mein Script würfelt nun alles durcheinander uns sortiert alles nach Alphabet, egal ob es ein Ordner ist oder ein .au3 oder .exe

    Ich hände zur ansicht mal ein Screenshot an.

    • Offizieller Beitrag

    Ich hab es mal in dein Script eingebaut. Bei mir funktionierts.
    Meine Zusätze hab ich mit: ;######################### markiert:

    Spoiler anzeigen
    [autoit]

    ;########## START ##########
    #cs
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    + BrowseNET BETA 2 +
    + +
    + Version: 0.7.9 BETA +
    + +
    + Autor: Kay Stratmann +
    + mit freundlicher Unterstützung von http://www.autoit.de +
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    #ce

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

    ;////////// GLOBALS \\\\\\\\\\
    Global Const $NM_FIRST = 0
    Global Const $NM_DBLCLK = -3
    ;////////// ENDE \\\\\\\\\\

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

    ;////////// HOTKEYS \\\\\\\\\\
    HotKeySet("{F1}", "_help")
    ;////////// ENDE \\\\\\\\\\

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

    ;////////// INCLUDES \\\\\\\\\
    #include <GUIConstants.au3>
    #include <GuiListView.au3>
    #Include <process.au3>
    #include <string.au3>

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

    ;###################################################
    #include <array.au3>
    Dim $arFolder[1], $arFile[1]
    ;###################################################

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

    ;////////// ENDE \\\\\\\\\\

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

    ;////////// OPTIONS \\\\\\\\\\
    Opt("GUIOnEventMode", 1)
    ;////////// ENDE \\\\\\\\\\

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

    ;////////// MAINSETTINGS \\\\\\\\\
    $datei1 = @ScriptDir & "\ordner.db"
    $Masterpfad = IniRead(@Scriptdir & "\konfiguration.ini", "Masterpfad", "Value", @Scriptdir & "\")
    $pfad = $masterpfad
    $autostart = IniRead(@ScriptDir & "\konfiguration.ini", "Autostart", "VALUE", "4")
    $pass_read = IniRead(@ScriptDir & "\konfiguration.ini", "Passwort", "Value", "")
    $encrypt = _StringEncrypt(0, $pass_read, "last")
    ;////////// ENDE \\\\\\\\\\

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

    ;////////// GUIS \\\\\\\\\\
    ;~~~~~~~~~~ MAINGUI ~~~~~~~~~~~
    $MAIN_GUI = GUICreate("BrowseNET", 200, 440, 0, 0) ;ERSTELLT DIE GUI
    GUISetHelp("BrowseNET.exe")
    $search = FileFindFirstFile($pfad & "*.*")
    $LIST_FOLDER = GUICtrlCreateListView("Scripte", 0, 0, 200, 410, $LVS_NOCOLUMNHEADER);ERSTELLT EINE LISTE
    _GUICtrlListViewSetColumnWidth($LIST_FOLDER, 0, 180) ; Breite = 200 minus Scrollbalken
    GUIRegisterMsg(0x004E, "_DoubleClickOnListView") ;DOPPELKLICK FUNKTION
    $main_btn1 = GUICtrlCreateButton("Zurück zum Startpfad", 37, 415, 120, 20) ;ERSTELLT EINEN BUTTON
    GUICtrlSetOnEvent($main_btn1, "_back")
    GUISetOnEvent($GUI_EVENT_CLOSE, "_exit") ;CLOSE BUTTON
    GUISetState(@SW_Show) ;SETZT DIE GUI AUF SHOW
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;~~~~~~~~~~ DATEI ~~~~~~~~~~
    $DATEI_MENUE = GUICtrlCreateMenu("Datei") ;ERSTELLT DAS MENUE
    $DATEI_ITEM1 = GUICtrlCreateMenu("Export", $Datei_Menue) ;ERSTELLT EIN ITEM
    $Export_ITEM1 = GUICtrlCreateMenuitem("Textdatei", $Datei_Item1) ;TEXTDATEI
    GUICtrlSetOnEvent($Export_ITEM1, "_export_text") ;EXPORT TEXT
    $Export_ITEM2 = GUICtrlCreateMenuitem("Exceldatei", $Datei_Item1) ;EXCELDATEI
    GUICtrlSetOnEvent($Export_item2, "_export_excel")
    $DATEI_ITEM2 = GUICtrlCreateMenuitem("Beenden", $DATEI_MENUE) ;ERSTELLT EIN ITEM
    GUICtrlSetOnEvent($DATEI_ITEM2, "_exit") ;BEENDEN
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;~~~~~~~~~~ OPTIONEN ~~~~~~~~~~
    $OPTION_MENUE = GUICtrlCreateMenu("Optionen") ;ERSTELLT DAS MENUE
    $OPTION_ITEM1 = GUICtrlCreateMenuitem("Einstellungen", $OPTION_MENUE) ;ERSTELLT EIN ITEM
    GUICtrlSetOnEvent($OPTION_ITEM1, "_pw_gui") ;OPTIONEN GUI
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;~~~~~~~~~~ INHALT LADEN ~~~~~~~~~~
    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    ;###################################################
    If StringInStr(StringRight($file,5),".") Then ; ==> Datei
    _ArrayAdd($arFile,$file)
    Else
    _ArrayAdd($arFolder,$file)
    EndIf
    ;###################################################
    ;GUICtrlCreateListViewItem($file, $LIST_FOLDER)
    WEnd
    ;###################################################
    For $i = 1 To UBound($arFolder)-1
    GUICtrlCreateListViewItem($arFolder[$i], $LIST_FOLDER)
    Next
    For $i = 1 To UBound($arFile)-1
    GUICtrlCreateListViewItem($arFile[$i], $LIST_FOLDER)
    Next
    ;###################################################
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;~~~~~~~~~~ OPTIONGUI ~~~~~~~~~~
    $OPT_GUI = GUICreate("Optionen", 200, 195) ;ERSTELLT DIE GUI
    GUICtrlCreateLabel("Masterpfad", 10, 10, 100, 20) ;ERSTELLT EIN LABEL
    GUICtrlCreateLabel("INFO: Die Pfadangabe muss immer mit einem ''\'' enden!", 10, 160, 180, 50) ;ERSTELLT EIN LABEL
    GUICtrlCreateLabel("Passwort", 10, 60, 75, 20) ;ERSTELLT EIN LABEL
    $opt_input1 = GUICtrlCreateInput($Masterpfad, 10, 30, 180, 20) ;ERSTELLT EIN INPUTFELD
    $opt_input2 = GUICtrlCreateInput($encrypt, 10, 80, 180, 20) ;ERSTELLT EIN INPUTFELD
    $checkbox = GUICtrlCreateCheckbox("Autostart", 15, 105) ;CHECKBOX
    GUICtrlSetState(-1, $autostart)
    $opt_btn1 = GUICtrlCreateButton("OK", 10, 135, 75, 20) ;ERSTELLT EINEN BUTTON
    GUICtrlSetOnEvent($opt_btn1, "_Opt_save") ;EINSTELLUNGEN SPEICHERN
    $opt_btn2 = GUICtrlCreateButton("Abbrechen", 115, 135, 75, 20) ;ERSTELLT EIEN BUTTON
    GUICtrlSetOnEvent($opt_btn2, "_opt_hide") ;ABBRECHEN
    GUISetOnEvent($GUI_EVENT_CLOSE, "_opt_hide") ;BEENDEN
    GUISetState(@SW_Hide, $OPT_GUI) ;SETZT DIE GUI AUF HIDE
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;~~~~~~~~~~ PASSWORTGUI ~~~~~~~~~~
    $pw_gui = GUICreate("Passwort", 200, 70) ;ERSTELLT DIE GUI
    $pw_input = GUICtrlCreateInput("", 10, 10, 180, 20, $ES_PASSWORD) ;INPUTFELD
    $pw_btn1 = GUICtrlCreateButton("Login", 10, 40, 75, 20) ;BUTTON
    GUICtrlSetOnEvent($pw_btn1, "_pw_login") ;LOGIN
    $pw_btn2 = GUICtrlCreateButton("Abbrechen", 115, 40, 75, 20) ;BUTTON
    GUICtrlSetOnEvent($pw_btn2, "_pw_hide") ;ABBRECHEN
    GUISetOnEvent($GUI_EVENT_CLOSE, "_pw_hide") ;BEENDEN
    GUISetState(@SW_Hide, $pw_gui) ;SETZT DIE GUI AUF HIDE
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;////////// ENDE \\\\\\\\\\

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

    ;////////// WHILESCHLEIFE \\\\\\\\\\
    While 1 ;BEGINN DER SCHLEIFE
    Sleep(100) ;100MS PAUSE
    WEnd ;SCHLEIFENENDE
    ;////////// ENDE \\\\\\\\\\

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

    ;////////// FUNKTIONEN \\\\\\\\\\
    ;~~~~~~~~~~ HELP ~~~~~~~~~~
    FUNC _help()
    _RunDOS("start " & @ScriptDir & "\Readme.txt")
    EndFunc
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;~~~~~~~~~~ EXPORT ~~~~~~~~~~
    Func _export_text()
    $exp_txt = FileSaveDialog("Export", Default, "(*.txt)", 16, "Export.txt")
    If @error Then
    ;
    Else
    If FileExists($exp_txt) Then
    FileDelete($exp_txt)
    EndIf
    $filesearch = FileFindFirstFile($pfad & "*.*")
    While 1
    $filefind = FileFindNextFile($filesearch)
    If @error Then ExitLoop
    FileWriteLine($exp_txt, $filefind)
    FileClose($exp_txt)
    WEnd
    _RunDOS("start " & $exp_txt)
    EndIf
    EndFunc

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

    Func _export_excel()
    $exp_xls = FileSaveDialog("Export", Default, "(*.xls)", 16, "Export.xls")
    If @error Then
    ;
    Else
    If FileExists($exp_xls) Then
    FileDelete($exp_xls)
    EndIf
    $filesearch = FileFindFirstFile($pfad & "*.*")
    While 1
    $filefind = FileFindNextFile($filesearch)
    If @error Then ExitLoop
    FileWriteLine($exp_xls, $filefind)
    FileClose($exp_xls)
    WEnd
    _RunDOS("start " & $exp_xls)
    EndIf
    EndFunc
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;~~~~~~~~~~ PASSWORT~~~~~~~~~~
    Func _pw_gui()
    GUISetState(@SW_SHOW, $pw_gui) ;SETZT DIE GUI AUF SHOW
    EndFunc

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

    Func _pw_hide()
    GUISetState(@SW_HIDE, $pw_GUI) ;SETZT DIE GUI AUF HIDE
    EndFunc

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

    Func _pw_login()
    $pw_input_read = GUICtrlRead($pw_input)
    If $pw_input_read == $encrypt Then
    GUISetState(@SW_SHOW, $opt_gui) ;SETZT DIE GUI AUF SHOW
    GUISetState(@SW_HIDE, $pw_gui) ;SETZT DIE GUI AUF HIDE
    Else
    MsgBox(0, "EINGABE FALSCH", "Das Passwort welches Sie eingegeben haben ist nicht korrekt!") ;MSGBOX
    EndIf
    EndFunc
    ;~~~~~~~~~~ ENDE ~~~~~~~~~
    ;~~~~~~~~~~ OPTIONEN ~~~~~~~~~~

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

    Func _opt_hide()
    GUISetState(@SW_HIDE, $opt_GUI) ;SETZT DIE GUI AUF HIDE
    EndFunc

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

    Func _opt_save()
    $opt_input1_read = GUICtrlRead($opt_input1) ;ERSTELLT EIN INPUTFELD
    $opt_input2_read = GUICtrlRead($opt_input2)
    IniWrite(@Scriptdir & "\konfiguration.ini", "Masterpfad", "Value", $opt_input1_read);SCHREIBT IN EINE INIDATEI
    IniWrite(@ScriptDir & "\konfiguration.ini", "Autostart", "Value", GUICtrlRead($Checkbox))
    $crypt = _StringEncrypt(1, $opt_input2_read, "last")
    IniWrite(@ScriptDir & "\konfiguration.ini", "Passwort", "Value", $crypt)
    If GUICtrlRead($checkbox) = "4" Then
    RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "BrowseNET")
    EndIf
    If GUICtrlRead($checkbox) = "1" Then
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "BrowseNET", "REG_SZ", @ScriptFullPath)
    EndIf
    MsgBox(0, "Einstellungen", "Die änderungen werden erst nach einem Neustart des Programms in kraft treten")
    GUISetState(@SW_HIDE, $OPT_GUI)
    EndFunc
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;~~~~~~~~~~ ZURÜCK ~~~~~~~~~~
    Func _back()
    $pfad = $Masterpfad
    $filesearch2 = FileFindFirstFile($pfad & "*.*")
    _GUICtrlListViewDeleteAllItems($LIST_FOLDER)
    ;###################################################
    ReDim $arFolder[1], $arFile[1] ; Arrays löschen
    ;###################################################
    While 1
    $filefind2 = FileFindNextFile($filesearch2)
    If @error Then ExitLoop
    ;###################################################
    If StringInStr(StringRight($filefind2,5),".") Then ; ==> Datei
    _ArrayAdd($arFile,$filefind2)
    Else
    _ArrayAdd($arFolder,$filefind2)
    EndIf
    ;###################################################
    ;GUICtrlCreateListViewItem($filefind2, $LIST_FOLDER)
    WEnd
    ;###################################################
    For $i = 1 To UBound($arFolder)-1
    GUICtrlCreateListViewItem($arFolder[$i], $LIST_FOLDER)
    Next
    For $i = 1 To UBound($arFile)-1
    GUICtrlCreateListViewItem($arFile[$i], $LIST_FOLDER)
    Next
    ;###################################################
    EndFunc
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;~~~~~~~~~~ BEENDEN ~~~~~~~~~
    Func _exit()
    ;IniWrite(@Scriptdir & "\konfiguration.ini", "Pfad", "Value", "I:\DV\dv3\scripte\ordner\")
    Exit ;BEENDEN
    EndFunc
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;////////// ENDE \\\\\\\\\\

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

    ;////////// EXTERN [AUTOIT.DE] \\\\\\\\\\
    ;~~~~~~~~~~ DOUBLECLICK ~~~~~~~~~~
    Func _DoubleClickOnListView($hWndGUI, $MsgID, $wParam, $lParam);Die Eigentliche Funktion
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3); Checkt wie das EVENT aussieht
    If $wParam = $List_Folder Then;Wenn der Klick auf das ListView ging..
    If $event = $NM_DBLCLK Then;.. Wenn es ein DoppelKlick war
    ; Hier kommt hin was er machen soll:
    $read_select = GUICtrlRead(GUICtrlRead($LIST_FOLDER))
    If StringInStr(FileGetAttrib($pfad & $read_select),"D") Then
    IniWrite(@Scriptdir & "\konfiguration.ini", "Pfad", "Value", $pfad & $read_select & "\")
    $pfad = IniRead(@Scriptdir & "\konfiguration.ini", "Pfad", "Value", "")
    $filesearch = FileFindFirstFile($pfad & "*.*")
    _GUICtrlListViewDeleteAllItems($LIST_FOLDER)
    While 1
    $filefind = FileFindNextFile($filesearch)
    If @error Then ExitLoop
    GUICtrlCreateListViewItem($filefind, $LIST_FOLDER)
    WEnd
    Else
    _RunDOS("Start " & $pfad & $read_select)
    EndIf
    EndIf
    EndIf
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc
    ;~~~~~~~~~~ ENDE ~~~~~~~~~~
    ;////////// ENDE \\\\\\\\\\

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

    ;########## ENDE ##########

    [/autoit]
  • Oh vielen Dank...
    Funktioniert.. ich werde mich da aber trozdem noch drucharbeiten da ich ja sicher noch änderungen vornehmen will..

    Irgendwie komm ich grundsätzlich nicht mit Arrays zurecht o_Ö bei php auch nicht XD

    Nochmals vielen Dank für deine bemühungen.

    EDIT: Ok ich habe mich nun soweit druchgearbeitet und verstehe das was du geändert hast soweit... (so schwer is es garnicht wie ich dachte)

    So nun ist mir ein Fehler aufgefallen.

    bei der _back() - funktion hat du es ja noch mal hinzugefügt nur wenn ich den Button "Zurück zum Startpfad" drücke habe ich zwar mein Anfangsverzeichnis bol dort ist nun alles Doppelt drinne.

    Der gunrd ist ja das durch ArrayADD die selben Elemente die Schon im Array drinne sind noch einma hinzugefügt werden.

    Gibt es einemöglichkeit den gesamten Arrayinhalt zulöschen?

    2 Mal editiert, zuletzt von Aiden (12. Oktober 2006 um 13:49)

    • Offizieller Beitrag

    An folgender Stelle in der Funktion "_back()" lösche ich das Array, bzw. ich definiere es mit "ReDim" neu als Array ohne Inhalt:

    [autoit]

    Func _back()
    $pfad = $Masterpfad
    $filesearch2 = FileFindFirstFile($pfad & "*.*")
    _GUICtrlListViewDeleteAllItems($LIST_FOLDER)
    ;###################################################
    ReDim $arFolder[1], $arFile[1] ; Arrays löschen
    ;###################################################

    [/autoit]

    Hatte ich erst auch nicht dran gedacht und da war mir das gleiche passiert :) .

  • Ahh danke nun läuft alles wieder So wie es sollte.

    Nun noch die schwiigste sache... die Vor und Zurück Buttons.
    Dann is es das erstmal mit der Version 1 =)

    Vielen Dank