1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. nuts

Beiträge von nuts

  • Function / Skriptbereich definieren

    • nuts
    • 17. Juli 2020 um 00:06

    Nein wieso denn? Zwischen Func/Endfunc wird die gewünschte Funktion definiert und diese kannst du dann wie im Beispiel oben an jeder Stelle des Skripts aufrufen.

  • Function / Skriptbereich definieren

    • nuts
    • 16. Juli 2020 um 23:28
    Code
    _Test() ; erst Ausführung 
    
    ; hier kann wieder was anderes passieren 
    
    
    _Test() ; zweite Ausführung
    
    
    Func _Test()
    
    ; Hier kommt dann rein was zu machen willst z.B.
    shellexecute(„chrome.exe“)
    
    sleep(100)
    
    Endfunc 
    Alles anzeigen

    Also suchst du schon die Funktionen oder?

  • Problem bei einer COM-Verbindung bei Array-Rückgabe

    • nuts
    • 14. November 2019 um 09:53

    Also früher war es mal so, dass die Array Rückgabe eines COM Objektes von autoit nicht unterstützt wurde.

    Finde allerdings den Hinweis darauf nicht mehr in der Hilfe, daher nicht sicher ob dies noch gilt.

  • RegExp Pattern gesucht

    • nuts
    • 16. April 2019 um 21:33

    Dankeschön. :thumbup:^^

  • RegExp Pattern gesucht

    • nuts
    • 16. April 2019 um 21:18

    Hi Leute,


    ist mir zwar etwas peinlich aber mir raucht der Kopf und daher dieser Thread. :(

    Gesucht ist ein RepExp Pattern für folgenden String:

    Code
    xyz123-xyz123-Suchstring\xyz123

    xyz123 steht dabei für eine beliebige Anzahl von Buchstaben und Ziffern, konstant im Aufbau sind die Sonderzeichen "-" und "\".

    Gesucht ist alles ( aka "Suchstring" = beliebig viele Buchstaben und Ziffern) was zwischen dem zweiten "-" (von links) und dem ersten "\" steht.


    Gruß & danke

    Nuts

  • Gerät aktivieren/deaktivieren

    • nuts
    • 22. August 2018 um 21:06

    Devcon.exe ist ja auch nur ein wrapper um bestimmte Funktionen anzusprechen.

    Hat enable/disable/status etc eigentlich schonmal jemand direkt in autoit umgesetzt?

    Meine Fähigkeiten übersteigt das leider ...

    https://github.com/Microsoft/Wind…evcon/README.md

  • Verarbeitung von Daten aus einer .ini Datei

    • nuts
    • 3. August 2018 um 22:17

    Falls es jemand mal brauchen kann und die Variante von alpines wie ich nicht so richtig versteht hier noch meine Lösung:

    Spoiler anzeigen
    Code
    #include <GUIConstants.au3>
    #Include <GUITreeView.au3>
    #Include <ArrayTree.au3>
    
    Global $s_inifile=FileOpenDialog("select ini file", @ScriptDir & "\" , "INI (*.ini)")
    if @error then exit
    Global $a_INI=_INI_to_3DArray($s_inifile)
    _ArrayDisplayTree($a_INI, "Example: INI to 3D Array")
    
    MsgBox(0, "", UBound($a_ini,3))
    
    
    Func _INI_to_3DArray($s_data)
        ;
        ; ~~ nuts (www.autoit.de) ~~
        ;
        ; $s_data = full path to .ini file
        ;
        ; returns a 3D Array with all sections (sectionnames and key/value)
        ; @error=1 => error in IniReadSectionNames
        ; @error=2 => error in IniReadSection
    
        Local $i_max=0
        Local $b_redim=true
        Local $i_limit=50
        Local $a_section
    
        Local $a_sectionNames=IniReadSectionNames($s_data)
        if @error then Return SetError(1,0,0)
    
        Local $i_sectionNames=Int($a_sectionNames[0])
        Local $a_return[$i_sectionNames][$i_limit][2]   ; create 3D Array
    
        for $i=1 to $a_sectionNames[0]
            $a_section=IniReadSection($s_data, $a_sectionNames[$i])
            If @error then Return SetError(2,0,0)
    
            if $i_max < $a_section[0][0] then $i_max=$a_section[0][0]+1
    
            If $i_max > $i_limit then ; Redim 3D Array if necessary
                ReDim $a_return[$i_sectionNames][$i_max][2]
                $b_redim=false
                ;MsgBox(0, "Redim", "slow redim ... :( ") ; debug
            endif
    
            $a_return[$i-1][0][0]=$a_sectionNames[$i]
            $a_return[$i-1][0][1]=$a_section[0][0]
            for $x=1 to $a_section[0][0]
                $a_return[$i-1][$x][0]=$a_section[$x][0]
                $a_return[$i-1][$x][1]=$a_section[$x][1]
            next
    
        next
    
        If $b_redim then
            Redim $a_return[$i_sectionNames][$i_max][2]
            ;MsgBox(0, "Redim", "slow redim on return ... :( ") ; debug
        endif
    
        Return $a_return
    
    endfunc
    Alles anzeigen

    Damit sollten die Redims minimiert werden. Besonders schnell ist bei grossen INI's (gefühlt) trotzdem nicht, aber ich mache auch keine Anwendungen bei denen die Geschwindigkeit eine besonderere Rolle spielt. ;)

  • ListView Groups - ein kleines Beispiel

    • nuts
    • 4. Juni 2018 um 19:57

    Sehr cool und danke fürs teilen.

    Mit den Listeview Gruppen kämpfe ich auch von Zeit zu Zeit und da ist dein Beispiel sicher mal hilfreich. :)

    P.S.

    Hast du ne Ahnung ob man auch leere Gruppen ohne Items erstellen und anzeigen kann? Ich verwende die Listview Gruppen für einen Editor für INI Dateien und sobald das letzte Key/Value Paar gelöscht wird muss die ganze Gruppe gelöscht werden.

  • Verarbeitung von Daten aus einer .ini Datei

    • nuts
    • 21. Mai 2018 um 16:53

    Danke das sieht auch interessant aus.

    Denke damit bastle ich mir passendes. :klatschen:

  • Verarbeitung von Daten aus einer .ini Datei

    • nuts
    • 21. Mai 2018 um 16:41

    Ja also jedes mal "Redimmen" will ich auf jeden Fall nicht, aber du hast recht da ist ein Denkfehler drin. Wie kann ich denn zählen wieoft ich "Redimmen" muss? Die Information liegt mir doch erst vor wenn ich alle Sektionen durch habe?

    Neuer Versuch:

    Code
    Func _INI_to_3DArray($s_data)
        ; $s_data = full path to .ini file
    
        ;
        ; return 3D Array with all sections
        ; @error=1 => error in IniReadSectionNames
        ; @error=2 => error in IniReadSection
    
        Local $i_max=0
        Local $i_limit=101
        Local $a_section
    
        Local $a_sectionNames=IniReadSectionNames($s_data)
        if @error then Return SetError(1,0,0)
    
        Local $a_return[Int($a_sectionNames[0])][$i_limit][2]   ; create 3D Array
    
        for $i=1 to $a_sectionNames[0]
            $a_section=IniReadSection($s_data, $a_sectionNames[$i])
            If @error then Return SetError(2,0,0)
    
            if $i_max<$a_section[0][0] then $i_max=$a_section[0][0]
    
            If $a_section[0][0] > $i_limit-1 then ; if section has more than 100 entrys => resize 3D Array
                $s_limit=$a_section[0][0]+1
                ReDim $a_return[Int($a_sectionNames[0])][$i_limit][2]
            endif
    
            $a_return[$i-1][0][0]=$a_sectionNames[$i]
            $a_return[$i-1][0][1]=$a_section[0][0]
            for $x=1 to $a_section[0][0]
                $a_return[$i-1][$x][0]=$a_section[$x][0]
                $a_return[$i-1][$x][1]=$a_section[$x][1]
            next
    
        next
    
        Redim $a_return[Int($a_sectionNames[0])][$i_max+1][2]
    
        Return $a_return
    
    endfunc
    Alles anzeigen
  • Verarbeitung von Daten aus einer .ini Datei

    • nuts
    • 21. Mai 2018 um 16:21

    Hab das jetzt mal umgesetzt. :)

    Vielleicht kann jemand nochmal drüber schauen? Weil mir raucht grad der Kopf vor lauter 3D Array ...

    Code
    #include <GUIConstants.au3>
    #Include <GUITreeView.au3>
    #Include <ArrayTree.au3>
    
    Global $s_inifile=FileOpenDialog("select ini file", @ScriptDir & "\" , "INI (*.ini)")
    if @error then exit
    Global $a_INI=_INI_to_3DArray($s_inifile)
    _ArrayDisplayTree($a_INI, "Example: INI to 3D Array")
    
    
    Func _INI_to_3DArray($s_data)
        ; $s_data = full path to .ini file
    
        ;
        ; return 3D Array with all sections
        ; @error=1 => error in IniReadSectionNames
        ; @error=2 => error in IniReadSection
    
        Local $i_max=0
        Local $i_limit=101
        Local $a_section
    
        Local $a_sectionNames=IniReadSectionNames($s_data)
        if @error then Return SetError(1,0,0)
    
        Local $a_return[Int($a_sectionNames[0])][$i_limit][2]   ; create 3D Array
    
        for $i=1 to $a_sectionNames[0]
            $a_section=IniReadSection($s_data, $a_sectionNames[$i])
            If @error then Return SetError(2,0,0)
    
            if $i_max<Int($a_section[0][0]) then $i_max=Int($a_section[0][0])
            If $i_max > $i_limit-1 then ; if section has more than 100 entrys => resize 3D Array
                $s_limit=$i_max+1
                ReDim $a_return[Int($a_sectionNames[0])][$i_limit][2]
            endif
    
            $a_return[$i-1][0][0]=$a_sectionNames[$i]
            $a_return[$i-1][0][1]=$a_section[0][0]
            for $x=1 to $a_section[0][0]
                $a_return[$i-1][$x][0]=$a_section[$x][0]
                $a_return[$i-1][$x][1]=$a_section[$x][1]
            next
    
        next
    
        Redim $a_return[Int($a_sectionNames[0])][$i_max+1][2]
    
        Return $a_return
    
    endfunc
    Alles anzeigen
    Code
    P:S. _ArrayTree im Anhang entspricht bis auf den o.a. Fix der verlinkten Funktion und wurde nur bezüglich der weiteren Verwendung von mir umbenannt. 

    Dateien

    ArrayTree.au3 2,54 kB – 616 Downloads
  • Verarbeitung von Daten aus einer .ini Datei

    • nuts
    • 21. Mai 2018 um 14:32

    Gefunden: https://www.autoitscript.com/forum/topic/51…raydisplaytree/

    Allerdings muss in der Array.au3 eine Anpassung vorgenommen werden:

    Code
    _GUICtrlTreeViewInsertItem 

    wird zu:

    Code
    _GUICtrlTreeView_InsertItem

    edit\ Ich habe mal eine lauffähige Version angehängt und das Beispiel für meine Zwecke erweitert.

    So muss die 3D Array Struktur für meine .ini dann aussehen oder?

    Zitat

    #Include "Array.au3"

    ; Example 2: 3D Array

    ;1. Dimension => Anzahl der Sektionen

    ;2. Dimmension => Anzahl der key/value Paare je Sektion

    ;3. Dimension => immer 2, da nur key/value möglich?

    Global $aMain[2][2][2] = [[["1. section - 1. key", "1. section - 1. value"], ["1. section - 2. key", "1. section - 2. value"]], _

    [["2. section - 1. key", "2. section - 1. value"], ["2. section - 2. key", "2. section - 2. value"]]]

    _ArrayDisplayTree($aMain, "Example 2: 3D Array")

    Alles anzeigen

    Dateien

    _ArrayDisplayTree.zip 1,6 kB – 723 Downloads
  • Verarbeitung von Daten aus einer .ini Datei

    • nuts
    • 21. Mai 2018 um 13:56

    Die Struktur scheint für meine Aufgabe gut zu passen, danke.

    Gab es hier mal nicht eine UDF, die ein 3D Array als treeview anzeigen konnte? Finde die leider nicht mehr ...

  • Verarbeitung von Daten aus einer .ini Datei

    • nuts
    • 21. Mai 2018 um 13:48

    Puh 3D Array ... ewig nicht verwendet (weil nie 100% verstanden :D ), aber wenn das sinnvoll ist werd ich mal die Theorie wiederholen.

  • Verarbeitung von Daten aus einer .ini Datei

    • nuts
    • 21. Mai 2018 um 13:27

    Hallo zusammen,


    ich habe hier ein kleines Problem beim Konzept meines Skriptes.

    Der Benutzer kann in einer festgelegten .ini Datei bestimmte Abläufe definieren.

    D.h. die .ini sieht ca. so aus, wobei dem Skript weder die Sektionen (Namen und Anzahl) noch der Inhalt der Sektionen vorher bekannt sind (da editierbar durch Benutzer):

    Code
    [Wartung]
    key=value
    ....
    
    [Backup]
    key=value
    ....

    Nun bekommt der Benutzer die Namen der Sektionen grafisch zur Auswahl angeboten um die als Key/Value definierten Abläufe in Gang zu bringen.

    Ich würde jetzt gern die .ini am Start des Skript in einem Rutsch einlesen und dann je nach Usereingabe gleich die erforderlichen Daten (key/value Paare der gewählten Sektion) als 2D Array vorliegen haben.

    Nur wie geht das? :/

    Man könnte für jede Sektion ein eigenes 2D Array erstellen, aber dann hat man im Skript eine dynamische Anzahl an 2D Arrays, da auch die Anzahl der Sektionen im Vorfeld unbekannt ist.

    Eigentlich würde ich das gerne vermeiden, da das (zumindest für mich) schwer lesbaren Code ergibt.

    Alternativ würde mir noch einfallen die .ini in ein "großes" 2D einzulesen, welches alle Sektionen und die jeweiligen key/value Paare enthält.

    Dabei stellt sich für mich dann die Frage: Wie finde ich aufgrund der Benutzerauswahl die passenden Einträge in diesem Array? Über _Arraysearch?

    Vielleicht habt ihr ja eine pfiffige Idee? Die Datenstruktur muss auch nicht unbedingt ein Array sein sollte sich eine andere Form als geeigneter herausstellen.


    Gruß und danke schonmal

    nuts

    P.S. Ich benötige kein funktionierendes Skript, sondern eher ein Hinweis wie man sowas sinnvoll im Code organisiert.

  • Listview-Datenbank v3

    • nuts
    • 13. Juni 2017 um 21:10

    Hi Oscar,


    super Skript.
    Du hast nicht zufällig so ein Beispiel mit "echtem Datenbank-Unterbau (SQLite oder sowas) rumliegen?


    Gruß und vielen Dank fürs Teilen! :)

    nuts

  • Listview mit Gruppen

    • nuts
    • 3. März 2017 um 17:43

    Danke das gefällt mir gut, sehr elegant. :)

  • Listview mit Gruppen

    • nuts
    • 25. Februar 2017 um 23:24

    Das entspricht ca. meiner Lösung um die Items für eine bestimmte Gruppe zu bestimmen.
    Funktioniert gut. :)

    Wie man am besten alle Gruppen und zugehörige Items eines Listviews auf einen Schlag ermittelt bin ich noch am grübeln. 3D Array ist wohl besser, aber dazu muss ich die Array Tutorials nochmal wiederholen. :D

  • Listview mit Gruppen

    • nuts
    • 24. Februar 2017 um 09:42

    Danke für deine Mühen.

    Irgendwie scheint mir ein 2D Array für ein ganzes Listview mit Gruppen ungeeignet zu sein.
    Ein Listview mit mehreren Spalten passt super zum 2D Array, kommen Gruppen hinzu fehlt eine Dimension.


    P.S. Wenn der Thread auf erledigt steht motiviert es nicht gerade sich den Thread anzuschauen ...

  • Listview mit Gruppen

    • nuts
    • 23. Februar 2017 um 22:14

    Also wirklich zufrieden bin ich mit meiner Lösung noch nicht ... was soll die Eile?

    Und die zweite Geschichte mit 2D Array erfordert ein Redim bei jedem verarbeiteten Item?
    Da bin ich auch noch etwas am probieren.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™