Page 1 of 1

Wie man ein Script schreibt.

Posted: 31 Oct 2013, 08:41
by nnnik
Dieses Tutorial enthält Arbeitsweisen wie man ein AHK Script erstellt.
Dazu werde ich einfach meine Arbeitsweise in Schritte unterteilen und Hier vorstellen.

Die Schritte wie ich ein Script schreibe laufen bei mir immer gleich ab.
Jedoch unterscheide ich zwischen 2 Scriptsorten: die "einfachen Scripte" und die "schweren Scripte".
Es ist für jeden unterschiedlich was ein schweres Script ist und was ein leichtes Script ist.

Einfache Scripte sind diese die man auf Anhieb oder fast auf Anhieb schafft.
Die Schritte sind einfach wie folgt:
  1. Informationsbeschaffung/Planung
  2. Informationsanwendung/Scripting
  3. Überprüfung
Diese Schritte selber laufen immer gleich ab, obwohl man manchmal mehr an dem und manchmal mehr an dem Schritt arbeitet.
Selbst bei komplexeren Scripten wende ich diesen Ablauf fast genau so an.
  1. Informationsbeschaffung/Planung:
    Dies ist immer der erste Schritt bei dem bei dem erstellen eines neuen Scriptes.
    Er hat immer selber Unterschritte die genau gleich ablaufen.
    1. Was genau will ich?
      Man überlegt sich eine Art Definition für sein Script z.B. "Ein Script welches einer Datei einen neuen zufälligen Namen zuweist."
      Man sollte dabei allerdings nicht übertreiben, sonst wird der scripting aufwand riesig und man wird nicht fertig.
    2. Was brauche ich dafür?
      Diese Frage stellt man sich danach was brauche ich um ein Script zu schreiben welches "einer Datei einen neuen zufälligen Namen zuweist."
      Weiß ich alles oder brauche ich noch Zusatzinformatonen.
      Um diesen Schritt zu vereinfachen unterteilt man sein zukünftiges Script in Teile:
      z.B. Der Teil der benutzt wird um die Datei auszuwählen.
      Der Teil der einen neuen Zufälligen Dateinamen bestimmt.
      Der Teil der dann die Datei umbenennt.
      Wenn man nicht alles weiss versucht man die Informationen diese Informationen durch externe Quellen zu erhalten.
      Wenn man sich in ein Thema einarbeiten muss sollte man dies in diesem Schritt machen und nicht später, da häufig getestt etc. werden muss, was später zu einer enorm langen Fehlersuche führen kann.
      Mögliche Quellen sind die Hilfedatei, das Forum, oder MSDN oder die Entwickler Seite.
      Man kann sich auch bereits bestehende Scripte anschauen um nach Code zu suchen den man braucht und diesen dann abändern. (Lizenz!)
      Das darf man nun aber nicht verwechseln. Man sucht die Informationen nur man lernt sie dann nicht auswendig sondern merkt sich nur die Quellen.
      Man sollte bei komplexeren Scripten sich diese Quellen aufschreiben.
    3. Planung
      In diesem Schritt plant man wie die einzelnen Scriptteile zusammenhängen.
      In unserem Beispiel verknüpfen wir die Informationen aus Teil 1 und 2 in Teil 3.
      Man kann sich diese Zusammenhänge auch aufschreiben oder aufmalen, dies macht schwierige Scripte leichter.
  2. Informationsverwendung/Scripting
    In diesem Schritt verwendet man nun die Quellen aus denen man seine Informationen bezogen hat um das Script zu erstellen.
    Ausserdem benutzt man die Teilung aus Punkt 1 um das Script selber in Labels, Funktionen oder Klassen zu unterteilen.
  3. Überprüfung
    Hier überprüft man sein Script einfach in dem man das Script startet und überprüft ob es funktioniert.
    Hierbei können verschiedene typen von Fehlern auftreten, welche man wieder unterteilen muss.
    • Syntaxfehler
      Der AHK Interpreter spuckt dann verschiedene Fehler aus wie z.B. "This Parameter contains a variable name missing its ending percent sign."
      Diese Fehler sind schon durch den Interpreter räumlich(innerhalb des Scripts) und vom Fehler her genauer eingegrenzt, deshalb auch leicht zu beheben.
    • "Es funktioniert einfach nicht"-Fehler
      Dieser Fehler ist am kompliziertesten zu behebende Fehler.
      Er ist nicht unbedingt räumlich eingegrenzt.
      Zu erst überprüft man auf Tippfehler und ähnliches wenn das nichts hilft muss man die schweren Geschütze auspacken.
      • Debuggen mit Msgboxen
        Dies ist die einfachste und Anfangs auch schnellere Methode einen Fehler zu finden.
        Ich gehe dabei so vor:
        Man unterteilt wieder in Scriptteile und überprüft ob jeder Teil das richtige tut und auf die anderen Teile überträgt:
        Bestimmt der erste Teil meinen Dateinamen richtig ?
        Bestimmt der zweite Teil meinen neuen Dateinamen richtig ?
        Werden vom dritten Teil die Informationen richtig empfangen und folgt daraufhin das umbenennen?
        Dazu schaut man einfach welchen Inhalt die einzelnen Variablen haben oder was bestimmte Funktionen zurückgeben.
        So kann man auch Fehler im Ablauf des Scriptes finden wie z.B. Teil 2 wird nicht ausgeführt.
      • Debuggen mit Scite4Autohotkey
        Man kann mit dem weit verbreiteten Editor einen sogenannten Single-Step debug durchführen und den Fehler so finden.
        Man kann unter anderem sich den Inhalt von Variablen anzeigen lassen und sich den Callstack anschauen.
        Insgesamt gesehen funktioniert der ABlauf eigentlich ähnlich wie das debuggen mit Msgboxen.
        Man bestimmt den Übeltäter und dann genauer was falsch ist.
        Mehr könnte ihr Hier erfahren:
        http://fincs.ahk4.net/scite4ahk/pages/debugger.htm
        Mit ein bisschen Übung ist man sogar schneller als mit Msgbox z.B. Ablauffehler findet man so sofort.
      Zudem muss man auch noch den Autohotkeybefehl OutputDebug erwähnen mit dem man sich vom Debugger Daten anzeigen lassen kann
    • Windows gibt dann eine Msgbox aus oder die Autohotkey oder was auch immer exe musste beendet werden oder wurde mit Errorlevel beendet.
      Dies ist ein Hinweis auf einen schweren Fehler.
      Entweder handelt es sich um einen Fehler bei DllCalls oder ein schwerer Ablauffehler existiert.
      Man behebt diese Sorte von Fehler auch durch debuggen.
      Ein Fehler durch DllCalls kann allerdings schwer zu beheben sein.
      Dann könnt ihr jederzeit im Forum nachfragen oder bei dem Hersteller nachschauen/fragen.

Das war der Ablauf für einfache Scripte. Ich hoffe ich konnte euch helfen.
Der Ablauf für schwierigere Scripte ist ähnlich jedoch wird Hier jeder Scriptteil einzeln behandelt und für jeden Scriptteil alle Schritte ausgeführt.
Je komplexer das Script um so mehr Teile hat man. Man darf aber auch nicht davor zurückschrecken in noch feinere Unterteile zu unterteilen.
Es wird dadurch einfacher, dass man alle Teile getrennt voneinander behandelt und somit ein einfaches Script hat.
Der letzte Schritt nachdem man alle Teile behandelt hat ist dass Zusammensetzen.
Wenn jetzt noch Fehler entstanden sind sind sie bei dem Zusammensetzen entstanden, die Möglichkeiten wo sich Fehler verstecken können sind begrenzt.

Re: Wie man ein Script schreibt.

Posted: 31 Oct 2013, 13:25
by nnnik
Ich hab es nochmal geedited.
Es wäre ganz nett wenn ihr mir Rückmeldungen geben könnt.
Sei es nun Kritik oder einfach wie ihr vorgeht wenn ihr ein Script schreibt.

Re: Wie man ein Script schreibt.

Posted: 01 Nov 2013, 01:16
by hoppfrosch
Ein paar Binsenweisheiten meinerseits:

* Man sollte sich bei der Planung wirklich GENAU überlegen was man machen will: sich von Anfang an auf das Wesentliche konzentrieren und nicht versuchen eine eierlegende Wollmichsau zu implementieren. Das verkürzt und die Entwicklungszeit - und erhöht die Aussicht auf ein erfolgreiches Projekt immens.
* Evtl. sollte man zur Überprüfung UnitTests (von Anfang an) einsetzen. Das erlaubt eine "permanente" Überprüfung, ob Verhalten, welches bereits funktioniert hat, durch aktuelle Code-Änderungen immer noch funktioniert. Das setzt natürlich auch voraus, dass man umfangreiche Unittests parallel zum Code weiterentwickelt. Meiner Ansicht nach sollten UnitTests integraler Bestandteil einer Programmiersprache sein ...
* Zum einfachen Debugging kann man auch Debug-Ausgaben über OutputDebug verwenden ... Das hat den Vorteil dass man die Debug-Ausgabebefehle im Code stehen lassen kann - wenn DbgView nicht läuft, sieht der Nutzer die Ausgaben auch nicht. Das ermöglicht auch einfach die Debug-Ausgaben zur nachträglichen Analyse abzuspeichern ...

Re: Wie man ein Script schreibt.

Posted: 01 Nov 2013, 07:24
by nnnik
1 meinte ich eigentlich mit der Definition die man sich überlegen muss.
Da hab ich mich wohl nicht richtig ausgedrückt.
3. Ist ziemlich gut werde ich noch hinzufügen.
Das ist ziemlich gut und wusste iich selber nicht Danke.
2. Würde ich allerdings wiedersprechen.
Die verschiedenen Scriptteile können in dieser Weise nur aufeinander einwirkenwenn keine richtige Trennung vorliegt.
Etwas was zu erheblichen Problemen führen kann und eig. schon in der Planungsphase verhindert wetden sollte.
Der Zusammenführenschritt sollte auch genau diese Funktion haben.

Re: Wie man ein Script schreibt.

Posted: 23 Oct 2014, 04:43
by BoBo
Kleine konstruktive Anmerkung, sobald Textmengen > 10 Zeilen angeboten werden, ist die (häufigere) Verwendung von Textabsätzen angeraten.
Bietet dem Auge beim Lesen Orientierung und bewirkt eine entspanntere Lektüre und damit eine verbesserte Aufnahme des Textinhalts.

Thx 4 listening.

BoBo

8-)

PS. Fast vergessen, ich finde diesen thread richtig gut! Musste mal gesagt, und der thread noch öfter gelesen werden :thumbup: