ByRef direkt ohne Leerzeichen hinter dem Komma in einer Function - nicht erlaubt?

  • Func _GetOnlineDriverInfo($sName,$sApi,$sPsVer,$sPsUrl,ByRef $sOnline,ByRef $sUrl)
    ergibt Fehlermeldung:
    "I:\Entwicklung\WebdriverUpdater_v2.09b.au3"(893,71) : error: missing separator character before keyword.
    Func _GetOnlineDriverInfo($sName,$sApi,$sPsVer,$sPsUrl,ByRef $sOnline,ByRef
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    Die Fehlermeldung verschwindet, wenn ich vor den beiden ByRef jeweils ein Leerzeichen einfüge.
    Im Forum gesucht und vermutlich mangels ausreichendem Suchbegriff nichts gefunden.

    Ist das ein Fehler in meiner AutoIt-Installation? Normalerweise kann man doch immer nach einem Komma sofort weiterschreiben!?

    :)

  • Aus meiner Sicht ist das durchaus ein Bug. Jedoch nicht von AutoIt sondern vom Tool Au3Check, welches oftmals vor AutoIt selbst aufgerufen wird.

    Kann man ganz gut daran erkennen wenn man es deaktiviert indem man am Anfang des Skriptes folgende Zeile setzt: #AutoIt3Wrapper_Run_AU3Check=N - dann läuft das Skript problemlos.

    Ich selbst bin kein Fan von dem meiner Meinung nach ziemlich verbuggten Tool. Das Ding erkennt viel zu viele False-Positives.

  • Hi zusammen ✌️,

    richtig, bin auch der Meinung es ist ein Bug im Au3Check Tool. Bin also bei AspirinJunkie .
    Melden kannst du diesen direkt bei @Jos im englischen Forum. Er ist "regelmäßig" dran am Tool und verbessert es weiter.

    Anderer Meinung bzgl. Au3Check im allgemeinen bin ich aber schon:
    Hier und da ist es buggy unter Umständen, doch dies trifft deutlich seltener auf als die positive Auswirkung des Tools.
    Die ganzen Checks sind hilfreich, u. a. gerade für Einsteiger die sie leider oft nicht nutzen (weil nicht ausreichend bekannt) und somit nicht selten relativ offensichtliche Verhaltensfehler im Code erzeugen. Klar, dass Meiste ist kosmetischer Natur (Syntax), was da gecheckt wird, doch aus falschen Scopes und falschen programming habits/bad code kann bei mittleren oder größeren Projekten auch schnell mal semantische Fehler entstehen, die man frühzeitig hätte vermeiden können.


    Für anderen Sprachen kennt man "linter" und "formatter" die solche Dinge abdecken. Die sind i.d.R. zwar nicht so buggy und im Funktionsumfang etwas mächtiger und ausgereifter, doch an sich gut das es so etwas auch für AutoIt gibt 👌 .

    Viele Grüße
    Sven

  • Da hatte ich (vor ein paar Monaten... glaube ich) irgendwas in die SB geschrieben was nicht mehr existiert, da das Archiv erstens kaputt ist (man kann nicht navigieren) und 2tens nur bis entry (12594) https://autoit.de/wcf/shoutbox/1/?entryID=12594 geht...

    Das Fazit war: Der Check hat mysteriöse Ansichten darüber was ein Trennzeichen ist und was nicht.

    Code
    If($a=1)Then
        ConsoleWrite("bla")
    EndIf

    Das ist völlig valider AutoIt Code, der den Check aber nicht besteht, da Trennzeichen in "fast" allen Fällen direkt vor einem Keyword nicht erkannt werden. Welche Ausnahmefälle ich gefunden hatte weiß ich leider nicht mehr auswendig.

    lg

    M