Vorbereitung auf zu erwartende Änderung in neuer AutoIt-Version

    • Offizieller Beitrag

    Hi,
    wie dem EN-Forum zu entnehmen ist, ist geplant zukünftig auch Variablennamen ohne Dollarzeichen zuzulassen.
    Das ist eine mittlere Katastrophe und ruiniert mit Sicherheit Hunderte von Skripten.
    Auch wenn AutoIt selber weiterhin abwärtskompatibel Variablen mit Dollarzeichen erkennen wird - unsere Skripte, die wir uns als Hilfen für den Umgang mit AutoIt erstellt haben sind darauf nicht vorbereitet.

    Bisher ließ sich eine Variable mit dem Pattern "(\$\w+)" ganz einfach parsen. Nun können wir dieses Pattern in die Tonne treten und müssen feststellen, dass sich ein Parsen mittels RegEx wohl nicht so ohne Weiteres realisieren lassen wird.
    Alle Begriffe aus AutoIt-Statements ( If, Then, Do, While etc. ) sind von Variablen aufgrund des Aufbaus nicht mehr zu unterscheiden.
    Funktionsnamen sind im ersten Moment auch als Variablen interpretierbar, jedoch ist die folgende öffnende Klammer ein Unterscheidungsmerkmal.

    Wie könnte ein Pattern aussehen, mit dem sich trotzdem Variablen erkennen lassen?
    Es wird das alte Pattern und wohl oder übel eine Ausschlussprüfung auf alle Statement-Begriffe mit Folgeabfrage auf öffnende Klammer enthalten müssen.
    Im Moment habe ich noch keine klare Vorstellung, wie ich das mit halbwegs Performance in ein RegEx-Pattern packen soll. Ideen werden gern entgegengenommen.

    Was meint ihr, ist damit alles enthalten oder habe ich noch was vergessen?

  • Wie könnte ein Pattern aussehen, mit dem sich trotzdem Variablen erkennen lassen?

    Spontan könnte ich mir nur eine Wordliste für AutoIt-Keywords vorstellen bei dem jedes Wort geprüft wird ob es ein AutoIt-Keyword oder ein anderes ist.
    Dementsprechend wird es dann als Variable oder als Keyword eingeteilt.
    Nur als RegEx-Pattern wird das aber sehr umständlich.

    Ein Unterscheidungsmerkmal könnte weiterhin sein dass Variablen im Gegensatz zu Keywords vor Operatoren vorkommen (z.B. kommt nach einem If nie ein "+-/[" etc.)
    So gesehen folgt auf jede Variable meistens ein Operator (allerdings außer wenn es als boolsche Variable abgefragt wird, oder in Deklarationen...)

  • Du hast vergessen, dass man einer Variablen nun eine Funktion zuweisen kann, Die Arraydeklaration wurde modifiziert, man kann die Größenangabe und evtl sogar die Klammern weglassen, da bin ich mir gerade nicht mehr sicher. Und ich weiß nicht, an was gerade sonst noch gearbeitet wird. Da könnten noch einige Überraschungen kommen.

    [autoit]

    Func a()
    Return 1
    EndFunc
    Global b = a
    c = b()

    [/autoit]
    • Offizieller Beitrag

    ;(
    Mehr oder minder sehr unangenehme Überraschungen.
    Ich werde dann wohl lieber Skripte, die Variablenerkennung beinhalten, nach LUA portieren. Die dann (hoffentlich) angepaßte SciTE4AutoIt-Version wird ja auch einen angepaßten Lexxer enthalten und der Lexxerstyle läßt sich mit LUA sehr gut zur Identifizierung einzelner Skriptkomponenten nutzen.

  • Was zum Teufel soll das?

    Ich Programmiere inzwischen zwar kaum noch in AutoIt da ich wert auf Plattform übergreifende und Leistungsfähige Software lege, aber in allen Programmiersprachen wo man vor der Variable kein $ setzt/setzten darf fehlt mir etwas!
    Es erhöht die Übersichtlichkeit und Eindeutigkeit total!

    Ich sehe keinen Nachteil darin ein $ vor eine Variable zu setzten, das Zeichen mehr schadet auch nicht!

    Wir können ja eine Massenbeschwerden bei denen einlegen^^

    mfg. Jam00

  • Zitat

    Wir können ja eine Massenbeschwerden bei denen einlegen^^


    währ dabei^^

    Ich persönlich würde dann die Alte Version weiterhin nutzen^^

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Ich finde die Umsetzung auch nicht gut, weil man $ setzen kann, es aber ignoriert wird.

    [autoit]

    Global a=10
    MsgBox(0, "", $a)

    [/autoit]


    Hierbei wird $a und a identisch und man kann den Zusammenhängende nicht so schnell erkennen.

    Der Bruch ist dennoch notwendig, da Variablen neuerdings Funktionen beinhalten können. Die Verwendung von

    [autoit]

    Global $function=ConsoleWrite
    $function("Hallo")

    [/autoit]


    würde auch einen Bruch darstellen, da nun Funktionen auch mit Dollarzeichen deklariert werden können.
    Auf längere Sicht wünsche ich die Entwicklung so, dass Funktionen zu normalen Variablen werden, wie in LUA.

  • Ich begrüße jede Weiterentwicklung von AutoIt. Wenn ich länger was mit C mache, dann vergesse ich bereits jetzt die $-Zeichen in AutoIt. Ich werde das neue Feature immer einsetzen, sobald eine neue Stable damit herauskommt.

    Ich dachte, $a und a sollten komplett unterschiedliche Variablen sein? Ansonsten kommt es sicher zu Verwirrungen.

  • Die FTP-UDFs enthalten eine Uploadfunktion mit Fortschrittsanzeige. Da ist es besser, die Funktion statt dem Funktionsnamen als String zu übergeben.

  • "Never change a running system!" Q_Q... Warum machen die denn sowas =.='.
    Das wird es schön erschweren, sich in fremden Code einzulesen, um zu helfen oder zusammen zu proggen =.=...

    Unnötige Änderungen... Die können AutoIt gerne "mächtiger" machen, aber so grundlegende Dinge ändern!? Ist wie mit der deutschen Rechtschreibung =.=... "Einfach ALLES erlauben, dann gibts weniger Fehler!"... -.-

  • Ich möchte dazu keinen neuen Thread erstellen, aber mal ein Beispiel, welche verrückten Sachen dabei rumkommen können :D