Func Namen aufzulisten

  • Hallo Forum
    Gibt es eine Möglichkeit im einem von mir erstellten Programm alle definierten „Func“ Namen aufzulisten?
    Zum besserem Verständnis ;
    Ich sende einen Anfrage zb. mit „?“ an das laufende Programm.
    Als Antwort soll mir dieses Programm seine eigene „Func- Namensliste" als Tootipp anzeigen.
    Das Senden und Empfangen habe ich gelöst.
    Nur wie das Programm die eigenen „Func“-Namen auflisten soll, da habe ich keine Idee.
    Ist das überhaupt möglich? ?(
    Danke für eure Hilfe

  • Grundsätzlich gäbe es ja die Möglichkeit, dass du die Funktionsnamen in ein Array Packst und das auf Knopfdruck ausließt.

    Grüße Yaerox

    Grüne Hölle

  • Hallo Yaerox
    Danke für deine schnelle Antwort.
    das mit dem Array ist mir klar, aber da müßte ich alle "Func" per Hand eingeben.
    Ich dachte eher daran, daß, das Programm sich selber nach "Func _Namen()" durchsuchten soll.
    Grüße Eugen

    • Offizieller Beitrag

    Ja, es gibt die Möglichkeit, dass das Script die eigenen Funktionsnamen ausliest.
    Wenn das auch mit der compilierten Exe funktionieren soll, ist es aber erforderlich, dass beim Compilieren unter "Resource Update" der Haken bei "Save a copy of the Scriptsource in the output program resources" gesetzt wird.

    Mit diesen Zeilen kannst Du dann innerhalb des Scripts die Funktionsnamen auslesen:

    AutoIt
    Global $sScript = FileRead(@ScriptFullPath)
    Global $aFunc = StringRegExp($sScript, '(?i)(?s)\bfunc (.+?)\(', 3)
    _ArrayDisplay($aFunc)
  • Mit dem Pattern werden auch auskommentierte Funktionen gefunden.
    Und Leerzeichen zwischen Name und Klammer auf sind auch erlaubt.
    Das Pattern also mal entsprechend erweitert: (?i)^\s*Func\s+([\w_]+)\s*\(

    Den Sonderfall, dass man zwischen Func und Name und zwischen Name und Klammer auf noch per _ einen Zeilenumbruch mit einfügen kann behandelt das Pattern jedoch nicht ;)

  • Hallo Oscar
    Super Tipp
    Das mit dem Compilieren muß ich noch schlucken genau so wie '(?i)(?s)\bfunc (.+?)\(' aber dafür gibt es ja die online deutsch Hilfe.
    Danke dir und auch Yaerox für eure Hilfe.
    Tolles Forum , Tolle Mitglieder
    Grüße Eugen

  • Dein Pattern funktioniert bei mir nicht.

    Stimmt - es fehlte ein (?m). ^^

    Aber so genau muss man doch sowieso nicht prüfen, weil der Syntax-Check von AutoIt doch vorher Alarm schlägt.

    Es geht ja nicht um die fehlerhaften Fälle, sondern um die, welche ebenfalls korrekte Syntax darstellen.
    Und zusätzlich noch der (sicherlich häufig vorkommende) Fall der auskommentierten Funktionen.

    Hier vielleicht mal zur Verdeutlichung - alle Funktionsdefinitionen sind korrekte AutoIt-Syntax:

    Spoiler anzeigen

    Einmal editiert, zuletzt von AspirinJunkie (25. Juni 2015 um 15:47)