Mein erstes Programm: strukturiert genug oder mache ich was falsch..??

  • Hallo, hab mit autoIt nu angefangen und mein erstes Programm geschrieben..

    eure meinung ist gefragt...! mache ich etwas zu kompliziert? hätte man etwas besser machen können? wenn ja: was...!
    Das hilft mir sehr, damit ich künftige Programme eventuell strukturierter und UnKomplizierter programmieren kann!
    hier mein Programm:

    (besonders die sache mit dem IF else If und EndIF: hätte man da was besser machen können??)

    Vielen dank für eure antworten!

    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $aktiv1 = RegRead ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoClose")
    $aktiv2 = RegRead ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoRun")
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Config-Tool by HeavyDrum", 226, 193, 300, 133)
    $Label1 = GUICtrlCreateLabel("Config-Tool", 40, 8, 155, 36)
    GUICtrlSetFont(-1, 20, 800, 4, "MS Sans Serif")
    $Group1 = GUICtrlCreateGroup("Actions", 32, 40, 169, 105)
    $Checkbox1 = GUICtrlCreateCheckbox("Beenden-Button entfernen", 40, 56, 153, 25)
    If $aktiv1 = "1" Then
    GUICtrlSetState(-1, $GUI_CHECKED)
    Else
    EndIf
    $Checkbox2 = GUICtrlCreateCheckbox("Ausführen-Button entfernen", 40, 80, 153, 25)
    If $aktiv2 = "1" Then
    GUICtrlSetState(-1, $GUI_CHECKED)
    Else
    EndIf
    $Checkbox3 = GUICtrlCreateCheckbox("Frei 2", 40, 104, 153, 25)
    GUICtrlSetState(-1, $GUI_DISABLE) ;Deaktiviert den zuvor erstellten Button
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button1 = GUICtrlCreateButton("Los!", 48, 160, 137, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    $wert = GUICtrlRead ($Checkbox1)
    $wert2= GUICtrlRead ($Checkbox2)
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    If $wert = "1" Then ;Schreibe in die Registrierungsbank
    RegWrite ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoClose", "REG_SZ", "1")
    ElseIf $wert = "4" Then ;Lösche den Wert aus der Registrierungsbank
    RegDelete ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoClose")
    EndIf ;Wird benötigt, weil sonst nur eines der Oberen If`s bearbeitet wird und nicht weitergegangen wird, (Wird nämlich nur solange bearbeitet, bis eines der zuweisung entspricht, danach wird die Gruppe verlassen)
    If $wert2= "1" Then
    RegWrite ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoRun", "REG_SZ", "1")
    ElseIf $wert2= "4" Then ;Lösche den Wert aus der Registrierungsbank
    RegDelete ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoRun")
    EndIf
    EndSwitch
    WEnd

    [/autoit]



    Edit BugFix: AutoIt-Tags gesetzt

    Einmal editiert, zuletzt von BugFix (22. März 2010 um 20:56)

  • Es ist vielleicht strukturiert, aber dennoch kenne ich den Zweck deines Scripts nicht :D Ich kenne mich in der Windows Registry nicht wirklich gut aus.
    Du solltest vielleicht eine Beschreibung dazupacken was das denn überhaupt macht und verwende beim Posten von AutoIt Quellcode doch bitte auch den enstprechenden Knopf im Beitragseditor.

  • Und Spoiler darfst du auch verwenden ;) Du kannst statt mehren Ifs auch das ganze mit Select bauen und mit ContinueCase angeben, dass fortgefahren werden soll. Und $wert und $wert2 solltest du auch nach dem Button gedrückt lesen, weils besser für die CPU is ;)

    Edit: Da hab ich irgendwie was falsch gelesen... Was schreib ich hier für'n Mist :rolleyes: :D

  • Ist doch ganz gut strukturiert.
    Vielleicht ein bisschen unübersichtlich.
    Ich mags lieber, wenn mein Script in Blocks geteilt ist.
    Aber das kann ja jeder machen wie er will.
    In Zeile 15 und Zeile 20 kann man das Else auch weglassen.

  • Kleiner Tipp am Rande:
    Mach deine GUI's selber - ohne Koda. Dadurch lernste schneller, weil du mehr selber machen musst.
    Zudem ist es später viel einfacher und schneller GUI's selbst zu coden als sie mit Koda zu erstellen.

  • Zitat

    Kleiner Tipp am Rande:

    Mach deine GUI's selber - ohne Koda. Dadurch lernste schneller, weil du mehr selber machen musst.
    Zudem ist es später viel einfacher und schneller GUI's selbst zu coden als sie mit Koda zu erstellen.

    Ich finde, dass am Anfang ist es wirklich wichtiger, dass man ohne Koda codet.
    Aber was ich ziemlich zeitaufwendend finde ist, dass man immer schauen muss ob z.B. der Button an der richtigen Position ist, oder nicht. (Das wiederholt sich bei mir meißtens so 5 mal bis es endlich stimmt)
    Das Problem hat man mit Koda nicht.
    Aber ich erstell GUIs trotzdem ohne Koda. Kommen schönere Ergebnisse raus, und ich kann das Script selber gestalten.

  • ja ok, da magste recht haben...

    die einzige sache is, warum ich gerne das tool nehme..

    man kann damit super die X Y Z - Werte ermittel...

    sonst müsste ich raten :huh:

  • In Zeile 15 und Zeile 20 kann man das Else auch weglassen.


    Wollte das nochmal betonen, weils anscheinend untergegangen ist...

    Find ich persönlich wichtig.

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • habs mir angeguckt und is auch angekommen, dank dir!

    sonst noch was?? irgendwas schlecht gelöst?

  • Noch ne Kleinigkeit, die du dir abgewöhnen solltest (Ist hier jetzt nicht sehr schlimm, wenn du aber ein größeres Projekt hast, kann das sehr verwirrend werden):

    $wert und $wert2 sind keine guten Variablennamen. Wenn du dir das Script dann später anschaust, musst du erstmal stundenlang suchen, bis du den Zusammenhang zwischen allen Variablen gefunden hast...

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Ich finde, dass am Anfang ist es wirklich wichtiger, dass man ohne Koda codet.
    Aber was ich ziemlich zeitaufwendend finde ist, dass man immer schauen muss ob z.B. der Button an der richtigen Position ist, oder nicht. (Das wiederholt sich bei mir meißtens so 5 mal bis es endlich stimmt)
    Das Problem hat man mit Koda nicht.
    Aber ich erstell GUIs trotzdem ohne Koda. Kommen schönere Ergebnisse raus, und ich kann das Script selber gestalten.

    Ohne Koda kannste später bessere GUI's erstellen und das auch schneller. Das mit den Koordinaten ist zwar am Anfang lästig, man kreigt es aber nur durch üben raus. Wenn man sich aber erstmal an Koda gewöhnt hat, wird man sich schwerlich dazu motivieren können auf GUI's selber designen umzustellen, weil es einen wieder in die Anfangszeit zurückzieht, weil es eben ungewohnt ist.

  • Ich empfehle dir, paar Zeilen Abstand zu machen.
    Dann hat man vielleicht auch eine bessere Übersicht.

  • Man sollte auch vermeiden zuviele Zeilen in die Hauptschleife zu packen. Das wird bei größeren Schleifen sehr unübersichtlich.
    Dazu einfach Funktionen verwenden und in der Schleife aufrufen.

    Spoiler anzeigen
    [autoit]


    Func _Button1()
    If $wert = "1" Then ;Schreibe in die Registrierungsbank
    RegWrite ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoClose", "REG_SZ", "1")
    ElseIf $wert = "4" Then ;Lösche den Wert aus der Registrierungsbank
    RegDelete ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoClose")
    EndIf ;Wird benötigt, weil sonst nur eines der Oberen If`s bearbeitet wird und nicht weitergegangen wird, (Wird nämlich nur solange bearbeitet, bis eines der zuweisung entspricht, danach wird die Gruppe verlassen)
    If $wert2= "1" Then
    RegWrite ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoRun", "REG_SZ", "1")
    ElseIf $wert2= "4" Then ;Lösche den Wert aus der Registrierungsbank
    RegDelete ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoRun")
    EndIf
    endfunc

    [/autoit]
  • Ich hätt noch was bei If die nur einen Befehl abarbeiten sollen, kannste das auch alles in eine Zeile schreiben und das EndIf weglassen.

  • Vielen vielen dank für eure antworten...!!

    die Funktion aufrufen und Zeilen platz lassen, dann gut zu merkende Variablennamen nehmen und dann passt das denk ich ...

    Den Letzten Beitrag hab ich nich ganz verstanden, sorry..;)

  • achso....

    ok!

    da haste recht!!

    und das geht aber nur bei einer Zeile, richtig? :rock:

    da haste recht;)