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
Func Namen aufzulisten
-
Silvermoon -
25. Juni 2015 um 13:34 -
Erledigt
-
-
Grundsätzlich gäbe es ja die Möglichkeit, dass du die Funktionsnamen in ein Array Packst und das auf Knopfdruck ausließt.
-
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:
-
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 -
- Offizieller Beitrag
AspirinJunkie: Dein Pattern funktioniert bei mir nicht.
Aber so genau muss man doch sowieso nicht prüfen, weil der Syntax-Check von AutoIt doch vorher Alarm schlägt. -
Auch dir danke ich im nachhinein AspirinJunkie
Danke -
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
AutoIt
Alles anzeigen#include <Array.au3> Global $s_Source = FileRead(@ScriptFullPath) Global $aFunc = StringRegExp($s_Source, '(?i)(?s)\bfunc (.+?)\(', 3) For $i = 0 To UBound($aFunc) -1 $aFunc[$i] = '"' & $aFunc[$i] & '"' Next _ArrayDisplay($aFunc, "Variante 1") Global $aFunc = StringRegExp($s_Source, '(?i)(?m)(?s)^\s*Func(?:\s|_\s*$)+([\w_]+)(?:\s|_\s*$)*\(', 3) For $i = 0 To UBound($aFunc) -1 $aFunc[$i] = '"' & $aFunc[$i] & '"' Next _ArrayDisplay($aFunc, "Variante 2") Func Test1() Return 1 EndFunc Func Test2 () Return 2 EndFunc ;~ Func Test3() ;~ Return 3 ;~ EndFunc func Test4 () Return 4 EndFunc Func Test5 _ () Return 5 EndFunc Func _ Test6 _ () Return 5 EndFunc