Eigenen Script-Editor programmieren, dazu ein paar Fragen.....

  • Hallo zusammen, ich möchte gern einen eigenen Script-Editor für AutoIT Programmieren, und das in AutoIT, es soll ein Klick-Editor werden, Ziel ist es, das die Befehle nicht mehr eingetippt werden müssen sondern man kann sich die Befehle aus einer Liste auswählen.

    z.B. eine For...Next Schleife, man klickt einfach auf diese und schon erstellt das Programm automatisch die benötigten Befehle, man braucht nun nur noch die Variable und die Werte und Schrittweite festlegen.

    Nun zu meinen Fragen.

    1. Au3Check.exe ist das Programm was eine Text-Datei mit dem Script auf Syntax-Fehler überprüft, wie kann ich dessen Ausgabe, besonders die Fehler die gefunden werden in ein eigenes Fenster umleiten, oder kurz gesagt, wie lese ich die Fehler aus, werden die z.B. in die Console (CMD) geschrieben wenn ich die Au3Check.exe aus der CMD starte?

    2. Au2Exe.exe ist ja der eigentliche Compiler der aus dem Script eine ausführbare Exe-Datei erstellt, auch hier die Frage, wie leite ich die Ausgabe (Fehlermeldungen) in ein eigenes Fenster um

    Habe mir die Hilfe schon durchgeschaut aber finde dort nichts oder habe es übersehen, bin für jede Hilfe dankbar.

    Warum das ganze, der SciTe-Editor ist zwar soweit gut aber mich stört es z.B. wenn man Includes festlegt das man nicht durch eintippen der Anfangsbuchstaben keine Auswahl wie bei den Befehlen angezeigt bekommt, aber mein Editor soll auch Tipparbeit ersparen und auch Tippfehler daher meine Idee zu diesem Editor.

  • Neben SciTE, gibts auch noch den "AutoIt Debugger", sowie "ISN AutoIt Studio"

    Deine Idee finde ich ganz gut, es wird jedoch schwer die ganzen Befehle leicht zugänglich zu machen. Wenn ich die Befehle erst aus einer 5000 Einträge langen Liste auswählen muss, wird es für fortgeschrittene Programmierer, die wissen wie der Befehl heißt, deutlich länger dauern.

    Nur für Anfänger, die erstmal nicht wissen wie die Befehle zu nutzen sind und wie sie aufgebaut sind, werden davon profitieren.

    Richtig nett wäre es ja, wenn man "grafisch" mit Logik-Blöcken programmieren kann und daraus dann der entsprechende Code generiert wird.
    (Für Mikrocontroller gibts ja sowas z.B: http://gcbasic.sourceforge.net/aboutgcgb.html )

    Ich konnte dir zwar nicht direkt helfen, aber vielleicht konnte ich dir trotzdem ein paar Informationen / Inspirationen geben.

    • Offizieller Beitrag

    Ziel ist es, das die Befehle nicht mehr eingetippt werden müssen sondern man kann sich die Befehle aus einer Liste auswählen.


    Aus einer Liste wählen ist definitiv langsamer, als mit Autovervollständigung durch Abbrevs zu arbeiten. ;)
    Lerne erst mal alle Möglichkeiten des SciTE-Editors auszuschöpfen. Wie im vorigen Post bereits gesagt gibt es auch noch ISN-Studio, weiterhin findest du hier im Forum noch einen Thread der sich mit SublimeText als Editor für AutoIt befasst.

  • Also das es eine lange Liste wird ist ja schon klar, sind ja viele Befehle dann noch die UDF-Befehle dazu, aber wenn würde ich das nicht als eine ganze Liste machen wollen sondern die Befehle gewissen Kategorien zuweisen.

    Es gibt ja z.B. die Schlüsselbefehle, dann die Schleifenbefehle, die Macros, Befehle für Variablen, Zeichenketten-Befehle (String), GUI-Befehle, und dem entsprechend würde ich dann passende Kategorien anlegen.

    Es soll ja auch die Möglichkeit bestehen Manuell Befehle einzugeben, und wie KloMeister schon sagte, soll es ja eine Art Grafische-Programmierung sein, das ganze soll in ein TreeView dargestellt werden, also wird sich Visuell sich nicht viel unterscheiden.

    Es soll z.B. auch möglich sein das man einen kompletten Programm-Block oder Abschnitt mit einen Klick ändern kann, z.B. einen IF-ElseIf Block in ein Select-Case Block oder Switch-Case, ohne das mal alle Zeilen wieder ändern muss.

    Was mich an SciTe-Editor stört ist das sogenannte Autovervollständigen, man gibt einen Befehl ein aber wenn man die Leertaste drück wird der ausgewählte Befehl nicht vervollständigt sonder muß immer erst die Enter/Return/Eingabe-Taste drücken.

    Dann wie gesagt, wenn man per Include weitere Sachen einbindet z.B. Konstanten kann man diese nicht auf die gleiche weise eingeben wie man es bei den Befehlen möglich ist, man muss leider dann die komplette Konstanten-Namen kennen.

    Das wollte ich halt mit meinen Editor ermöglichen.

    • Offizieller Beitrag
    Zitat


    Was mich an SciTe-Editor stört ist das sogenannte Autovervollständigen, man gibt einen Befehl ein aber wenn man die Leertaste drück wird der ausgewählte Befehl nicht vervollständigt sonder muß immer erst die Enter/Return/Eingabe-Taste drücken.

    Dann wie gesagt, wenn man per Include weitere Sachen einbindet z.B. Konstanten kann man diese nicht auf die gleiche weise eingeben wie man es bei den Befehlen möglich ist, man muss leider dann die komplette Konstanten-Namen kennen.


    Dann solltest du mal deine Installation überprüfen. All das geht auch mit SciTE.

  • BugFix, was kann ich den falsch gemacht haben??? habe mir den Installer runtergeladen und halt einfach installiert, aber SciTe macht das nicht so wie es wohl Anschein nach doch geht.

    Wenn man als Befehl #include <xyz.au3> angibt, sollen alle Funktionen und Konstanten auch mit Hilfe der Autovervollständigen im SciTe möglich sein, auch wenn ich eigene Au3-Dateien Include sollten diese dann mit Autovervollständigen möglich sein.

    Ok wie muss SciTe installiert werden, die abgespeckte Version oder die Vollversion??? wo muss ich was einstellen?

    Vielen dank für die Hilfe im voraus

    • Offizieller Beitrag

    Du benötigst schon "SciTE4AutoIt", also nicht die small Version.
    In SciTE öffnest du mit "Strg+1" die Konfiguration. Dort findest du u.a. den Abbrev Manager. Damit kannst du ganze Scriptblöcke oder auch nur einzelne Befehle einfügen (und standardmäßig funktioniert das mit Leertaste nach dem Abbrev-Kürzel).
    Um Autovervollständigung für die Konstanten von Includes zu erhalten, musst du selbst ein wenig basteln. Schau dir in der SciTE Installation die verwendeten Tools an. Autocomplete ist das, was du brauchst. SciTE wird mit Lua - Skripten gesteuert. Ist aber recht simpel. Du findest auch hier ein Unterforum 'Lua', da sind viele Hinweise zur Individualisierung von SciTE zu finden.
    Probier selber mal, wie weit du kommst. Wenn du hängen bleibst, melde dich. Dann helfe ich dir gern weiter.

  • Ach, da kenne ich schon ein Programm welches diese "grafische Programmierung" ermöglicht. Schau dir mal Scratch an, wird kostenlos im Netz auf der Herstellerseite angeboten.

    Zu deinen Fragen:
    Du kannst das Programm einfach normal in der CMD aufrufen. In Falle eines AutoIt Programmes eben mit Run. Da hast du dann die Möglichkeit die STD-Streams auszulesen und dann ggf. zu verwerten. Allein schon beispielsweise bei dem Au3Check erhälst du eine kleine Hilfe angezeigt wenn du diesen in der CMD ohne Parameter startest.

  • Ja das Scratch hatte ich mal vor längere Zeit gefunden und mir auch angeschaut, so in der Art wollte ich das auch machen.

    Aber im Grunde soll mein Script-Editor halt einiges an Tip-Arbeit sparen, z.B. wie ich mir das so im folgenden vorstelle.

    Man wählt z.B die Kategorie "Schleifenbefehle" aus und bekommt eine Liste aller Schleifenbefehle, For...Next, For...In...Each, While...Wend .u.s.w
    Nach der Auswahl des gewünschten Schleifenbefehls, erscheint ein Eigenschaften-Fenster, in dem Fenster werden z.B im Fall eines "For...Next" Schleifenbefehls, 4 Eingabefelder angezeigt.
    1. Eingabefeld für den Variablen-Namen, mit einem Aufklapp-Menü in den alle schon Definierten Variablen enthalten sind und einer Extra-Option zum festlegen einer neuen Variablen für die Schleife.

    2. Eingabefeld zum festlegen eines Startwerts oder zum Eingeben einer Berechnungs-Formel
    3. Eingabefeld zum festlegen eines Endwerts oder auch hier Berechnung einer Formel, wobei in beiden fällen auch Variablen aus einem Aufklapp-Menü ausgewählt werden können

    4. Eingabe der Schrittweite, also der STEP-Befehl

    Nach dem man das Eigenschaften-Fenster mit OK bestätigt, werden die Befehle automatisch erstellt, so mit entfällt schon das eintippen des NEXT-Befehls.

    Wie ich genau solche Eigenschaften-Fenster und Eingabefelder aufbaue muss ich noch überlegen, sollte z.B. aber eine neue Variable festgelegt werden, wird das Programm diese auch automatisch als Globale Variable definieren, beim Auflisten vorhandener Variablen, werden natürlich nur Variablen aufgelistet die schon bereits in einer Schleife als Zähl-Variable verwendet wurde und zur zeit auch nicht als Zähl oder Schleifen-Variable verwendet wird, z.B. Verschachtelte Schleifen, den es wäre ja unsinnig eine Schleifen-Variable in der Auswahl aufzulisten die bereits in einer übergeordneten Schleife verwendet wird.

    Schleifen-Variablen sollten sich ja im Grunde einfach erkennen lassen, an Hand der Bedingung mit der die Schleife beendet wird oder fortgesetzt wird.

    Was auch überwacht oder geprüft werden soll, was ja gerade bei Schleifen öfters mal passieren kann, Endlos-Schleifen, das passiert ja bei While...WEnd Schleifen gerne mal, z.B. wird ein Wert in einer Variable geprüft, so schaut das Programm nach ob diese Variable innerhalb der Schleife auch verwendet wird, ist die Variable aber nicht vorhanden, kommt eine entsprechende Warnung, auch entsprechende Verknüpfungen von Abfragen werden dann beachtet, z.B. AND, OR, NOT u.s.w.

    Auch das lässt sich ja im Grunde einfach Prüfen, wird eine Variable für die Schleife benutzt, wird nachgesehen ob innerhalb der Schleife diese Variable auch gesetzt wird, das so mit auch die Bedingung erfüllt werden kann, kommt die Variable innerhalb der Schleife kein 2. mal vor, kann davon ausgegangen werden das dies zu einer Endlos-Schleife führt, weil die Variable die geprüft wird, sonst in der Schleife nicht mehr verwendet wird.

    Es soll auch eine einfache Möglichkeit gegeben sein, eine Schleifen-Art in eine andere umzuwandeln.

    Ich weiß das wird schon ein recht umfangreiches Programm aber werde es Stück für Stück aufbauen und diverse Test-Scripts erstellen und diese dann an den entsprechenden Programm-Modulen Testen.

    2 Mal editiert, zuletzt von Samson71 (21. Dezember 2014 um 19:00)