Zeile finden in Quelltext nach dem kompilieren(bei Programmfehler)

  • Hallo Autoit Profis.

    wenn ich mein Programm laufen lasse kann es sein, dass eine Fehlermeldung(MsgBox) von Autoit aufpoppt und eine nicht deklarierte Variable
    reklamiert in Zeile 11.344. Mein Originalcode hat aber nur 1105 Zeilen. Das werden dann wohl die Includes sein.

    wie kann man denn nun die richtige Zeile im Code finden ohne die Zeilenanzahl der Includes herauszufinden und dazu zu addieren? Gibt es eine Funktion oder so?

    Ich habe meinen Code durchsucht kann aber keine "Nicht"-deklarierte Varaible finden ;(

  • Dieses Thema wurde im deutschen und englischen bereits ad nauseam diskutiert.
    Die Suchfunktion in beiden Foren bringt daher Treffer ohne Ende ;)

  • Wie kann man denn nun die richtige Zeile im Code finden ohne die Zeilenanzahl der Includes herauszufinden und dazu zu addieren? Gibt es eine Funktion oder so?

    Eine Möglichkeit ist, folgende Kompilerdirektive im Header des Hauptskriptes zu setzen :

    AutoIt
    #AutoIt3Wrapper_Run_Au3Stripper=y
    #Au3Stripper_Parameters=/MO  ; /MergeOnly

    Die Zeilennummer in der *_stripped.au3 und der .exe sollten bei einem Error nun übereinstimmen.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hallo Musashi,

    vielen lieben Dank für deinen Beitrag. Ich hatte den Beitrag ja schon auf erledigt gesetzt, da ich den Fehler in meinem Script auch so fand.
    Auf den Hinweis von water hin, hatte ich im Forum gesucht aber leider nichts gefunden.

    Vielleicht wird die Lösung durch diesen Beitrag jetzt besser gefunden. Insofern danke noch einmal im Namen aller, die auf diese Frage eine Antwort suchen werden...:klatschen::thumbup:

  • Hallo Leute

    Die Zeilennummer in der *_stripped.au3 und der .exe sollten bei einem Error nun übereinstimmen.

    Dabei sollte man aber definitiv noch den Hinweis ergänzen, dass man dazu die Hilfe aufrufen sollte (nicht die AutoIt-Hilfe sondern die von SciTE (findet sich auch unter dem Menüpunkt Help). Dort steht nämlich der Hinweis, dass #pragma compile Zeilen nicht berücksichtigt werden. Wenn man die nutzt, ergibt sich wieder ein kleiner Versatz durch die Anzahl dieser Zeilen..

    Grüße autoiter

  • Dort steht nämlich der Hinweis, dass #pragma compile Zeilen nicht berücksichtigt werden. Wenn man die nutzt, ergibt sich wieder ein kleiner Versatz durch die Anzahl dieser Zeilen..

    Danke für die Ergänzung - das hätte ich wohl erwähnen sollen ;).

    Au3Stripper (Auszug) :

    /MergeOnly or /MO :

    Will produce a scriptfile as AUT2EXE includes in the Compiled EXE. This allows you to find the proper linenumber when errors are reported.

    Note: Make sure you remove the #pragma lines or else the linenumbers will be off by the that number of records

    Hier die Infos zu #pragma bzw. Pragma Compile Directives.

    Die meisten dieser Direktiven lassen sich aber auch mittels #Autoit3Wrapper setzen.

    Man kann also bei Bedarf die #pragma-Direktiven (sofern man diese verwendet) im eigenen Skript gegen #Autoit3Wrapper-Direktiven austauschen.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."