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. XxBlueTomatoXx

Beiträge von XxBlueTomatoXx

  • Variable nach einem String benennen $($string)

    • XxBlueTomatoXx
    • 23. Juni 2022 um 11:38

    Danke für eure Lösungen, ich schaue mir diese entspannt noch einmal an, ich will nur erstmal mit dem Projekt, ich werde mit Sicherheit beim Feinschliff darauf zurückkommen. Listview ist leider nichts für die Kollegen, die sind Gewohnheitstiere :D

    funkeys Lösung entspricht ja ungefähr meiner. Alinas habe ich noch nicht ganze verstanden, da brauche ich noch einen Augenblick.

    Danke euch aber schonmal.

    Ich habe das Ganze jetzt vorerst so gelöst:

    Code
    $safe = UBound($rechnerarr)-1
    Global $rechnerbtn[$safe]
    
    
    For $i = 1 To $rechneriMax - 1    ; subtract 1 from size to prevent an out of bounds error
        $rechnerbtn[$i-1] = GUICtrlCreateButton($rechnerarr[$i], $ButtonStart + ($RechnerButtonIndex * $ButtonSpacer), $Buttonhoehe, $Buttonbreite, 25)
        GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKAUTO)
        $RechnerButtonIndex = $RechnerButtonIndex + 1
        If $RechnerButtonIndex = 7 - 1 Then
            $RechnerButtonIndex = 0
            $Buttonhoehe = $Buttonhoehe + 29
        EndIf
    Next
    
    
    Case $rechnerbtn[0] ; Ping
        btnPing()
    Alles anzeigen
  • Variable nach einem String benennen $($string)

    • XxBlueTomatoXx
    • 22. Juni 2022 um 10:16
    Zitat von BugFix

    Welchen Vorteil bringt dir das denn, bzw. warum soll das erforderlich sein, dass ein Text ausgewählt wird und dann eine Variable der Form $TEXT gebildet wird?

    Variablen sind nur Container, ihr Name ist völlig wumpe, er muss nur eindeutig sein. Wichtig ist deren Inhalt.

    Erklär mal, was du genau vorhast, dann können wir dir auch einen Lösungsansatz bieten. Eval & Assign sind Krücken, die man tunlichst vermeiden sollte und in 99,99% der Programmierung auch tatsächlich nicht braucht.

    Moin Bugfix

    ich schreibe an einem Programm um Clients im beruflichen Umfeld zu administieren, dieses Tool wird abteilungsübergreifend eingesetzt. Ich habe vor 2-3 Jahren die Aufgabe bekommen dieses Programm, von einem Kollegen der die Abteilung gewechselt hat, zu übernehmen und zu administrieren. Nun versuche ich das Programm von Grund auf neu aufzubauen.

    Mein Kollege hat alle Buttons einzeln erzeugt nach dem Schema wie ich es bereits angegeben hatte:

    Code
    $Ping = GUICtrlCreateButton("Ping", $ButtonStart + ($ButtonIndex * $ButtonSpacer), $Buttonhoehe, $Buttonbreite, 25))
    $RechnerButtonIndex = $ButtonIndex + 1
    $FastPing = GUICtrlCreateButton("FastPing", $ButtonStart + ($ButtonIndex * $ButtonSpacer), $Buttonhoehe, $Buttonbreite, 25))
    
    ;und dann später in der WHILE SCHLEIFE der GUI, in der auf User Interaktion gewartet wird, wie im unteren Beispiel auch:
    Case $Ping
        Exit
    Case $FastPing
        Exit

    ich versuche das nun dynamisch zu lösen damit ich Buttons einfach im array $rechnerbuttonlist hinzufügen kann und diese automatisch in Reihe und Spalte erzeugt werden

    Code
    Global $MainGUI = GUICreate("Support Tool", 1118, 843, 317, 119, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_THICKFRAME, $WS_TABSTOP), BitOR($WS_EX_ACCEPTFILES, $WS_EX_WINDOWEDGE)) 
    
    #Region ### Rechnerbuttons
    Global $Buttonbreite = 178
    Global $ButtonSpacer = $Buttonbreite + 4    ;Buttonbreite + Abstand
    Global $RechnerButtonIndex = 0 ;Zähler der Buttons, wird pro Button +1 gerechnet
    Global $ButtonStart = 16
    Global $Buttonhoehe = 150
    $Rechnertab = GUICtrlCreateTabItem("Rechner")     ;Erstelle Rechnertab
    
    Global $rechnerbuttonlist = "Ping|FastPing|Ping -t|4|5|6|7|8|9|10|11|12"  ;Buttonnamen 
    Global $rechnerarr = StringSplit($rechnerbuttonlist, "|")
    $rechneriMax = UBound($rechnerarr)    ; get array size
    For $i = 1 To $rechneriMax - 1    ; subtract 1 from size to prevent an out of bounds error
        Assign($i, GUICtrlCreateButton($rechnerarr[$i], $ButtonStart + ($RechnerButtonIndex * $ButtonSpacer), $Buttonhoehe, $Buttonbreite, 25))
        GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKHEIGHT + $GUI_DOCKAUTO)
        $RechnerButtonIndex = $RechnerButtonIndex + 1
        If $RechnerButtonIndex = 7 - 1 Then
            $RechnerButtonIndex = 0
            $Buttonhoehe = $Buttonhoehe + 29
        EndIf
    Next
    
    WhileLoop()
    Func WhileLoop()
        While 1
            $nMsg = GUIGetMsg()        ;Frage aktuelle User-Interaktion ab
            If $nMsg <> $GUI_EVENT_MOUSEMOVE And $nMsg <> $GUI_EVENT_NONE Then      
                Switch $nMsg    ;Switche die Interaktion durch
                    Case $GUI_EVENT_CLOSE
                        Exit
    ;~              Case $Ping
    ;~                  Exit
    ;~              Case $FastPing
    ;~                  Exit
                EndSwitch
            EndIf
        WEnd
    EndFunc   ;==>WhileLoop
    Alles anzeigen
  • Variable nach einem String benennen $($string)

    • XxBlueTomatoXx
    • 22. Juni 2022 um 09:32

    Moin zusammen,

    Ich bin gerade dabei eine Schleife zu schreiben, in der ich GUI Buttons aus einem Array erzeugen möchte. Jetzt habe ich das Problem, das ich für eine Funktion, die ich beim Klick auf den Button ausführen möchte, einen Case brauche (z.b $Ping) der genauso heißt wie die Beschriftung des Buttons.

    $Ping = GUICtrlCreateButton($arr[$i], $ButtonStart + ($ButtonIndex * $ButtonSpacer), $Buttonhoehe, $Buttonbreite, 25))

    und dann später in der WHILE SCHLEIFE, in der auf User Interaktion gewartet wird:

    Case $Ping

    Ping()

    Ich finde leider keine Lösung wie ich eine Variable nach einem String bennen kann. Ich habe das Problem mal auf ein paar Zeilen Code runtergebrochen. Das mit dem Assign klappt aber nicht so, wie ich mir das vorgestellt habe und es werden keine Variablen AA, BB und CC erzeugt mit dem Inhalt "Es" "hat" "funktioniert".

    Ich bin am verzweifeln ;( und freue mich auf Eure Hilfe :)


    Code
    Global $list = "AA|BB|CC"
    Global $arr = StringSplit($list, "|")
    Global $funktioniert = "Es|hat|funktioniert"
    Global $arrfunktioniert = StringSplit($list, "|")
    
    
    $Max = UBound($arr)     ; get array size
    
    
    For $i = 1 To $Max - 1
    $ddd = $arr[$i]
    $ccc = $arrfunktioniert[$i]
    Assign($ddd, $ccc, 2)
    Next
    
    
    MsgBox(16, "Test", $AA & $BB & $CC)
    Alles anzeigen

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™