OrganizeIncludes zeigt nicht alle Includes an

  • Hallo


    ich habe mir mal OrganzizeIncludes zugelegt, was bei mir nur Teilweise sauber arbeitet.
    Habe zwei Skripts, das erste für die GUI:

    #include <GUIConstantsEx.au3>
    #include <extern.au3>


    Opt("GUIOnEventMode", 1)


    GUICreate("Fenster Test", 500, 300, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    GUICtrlCreateButton("Knopf", 10, 10, 100, 40)
    GUICtrlSetOnEvent(-1, "_Knopf")
    GUICtrlCreateButton("Konnektor", 10, 60, 100, 40)
    GUICtrlSetOnEvent(-1, "_exFunktionA")
    $Input1 = GUICtrlCreateInput("Input", 10, 110, 100, 20)


    GUISetState()


    While 1
    Sleep(100)
    WEnd


    Das zweite beinhaltet die Funktionen für die Buttons

    $exText = "bla bla"


    Func _Exit()
    Exit
    EndFunc


    Func _Knopf()
    MsgBox(64, "Text", "Lääääuft " & GUICtrlRead($Input1) & $exText)
    EndFunc


    Func _exFunktionA()
    MsgBox(64, "ExFunk", "Erfolgreich")
    EndFunc


    Wenn ich nun OI drüber laufen lasse, zeigt es mir im Skript mit der GUI an, das ich "#include <extern.au3>"
    nicht brauche...


    Jemand eine Idee ?

  • Zeig mir mal, wo dein Script eine der FUNKTIONEN AUFRUFT :P
    Diese Funktionen werden nirgends aufgerufen, sie sind ein TEXT innerhalb einer weiteren Funktion.
    Alles klar jetzt? :rolleyes:

  • oh, sorry - falsche version kopiert:



    #include <GUIConstantsEx.au3>
    #include <extern.au3>


    Opt("GUIOnEventMode", 1)


    GUICreate("Fenster Test", 500, 300, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    GUICtrlCreateButton("Knopf", 10, 10, 100, 40)
    GUICtrlSetOnEvent(-1, "_Knopf")
    GUICtrlCreateButton("Konnektor", 10, 60, 100, 40)
    GUICtrlSetOnEvent(-1, "_exFunktionB")
    $Input1 = GUICtrlCreateInput("Input", 10, 110, 100, 20)


    GUISetState()


    While 1
    Sleep(100)
    WEnd




    #include <FF.au3>


    $exText = "bla bla"


    Func _Exit()
    Exit
    EndFunc


    Func _Knopf()
    MsgBox(64, "Text", "Lääääuft " & GUICtrlRead($Input1) & $exText)
    EndFunc


    Func _exFunktionA()
    MsgBox(64, "ExFunk", "Erfolgreich")
    EndFunc


    Func _exFunktionB()
    _FFConnect()
    If _FFIsConnected() Then
    _FFOpenURL("www.web.de")
    EndIf
    EndFunc

  • unerheblich...


    Frage: WO WIRD IN DEINEM SCRIPT EINE FUNKTION AUFGERUFEN?
    Antwort: ES WIRD KEINE FUNKTION AUFGERUFEN!


    Ergo, wenn OI keine Funktion(en) in deinem Hauptscript findet, kann es auch diese Funktionen in den Scripten in den angegebenen Verzeichnissen nicht suchen!

  • für mein Verständnis:
    OI kann also nur direkte aufrufe von Funktionen erkennen. Wenn diese durch ein Ereignis wie z.b. das drücken eines Buttons ausgelöst werden, werden diese nicht berücksichtigt?!

  • Nur fürs Verständnis, OI erkennt keine Funktionen innerhalb eines TEXTES!


    In deinem Script existieren keine Funktionen.
    Beispiel:
    dim $a[1] = [1234]


    $b = "_ArrayDisplay($a)" ;das ist ein Text, keine Funktion


    msgbox(0,0,$b)



    dim $a[1] = [1234]


    $b = _ArrayDisplay($a) ;das ist eine Funktion, wird von OI gefunden


    msgbox(0,0,$b)

  • Ich glaube ihr redet gerade aneinander vorbei.
    Ich verstehe stiffn so:
    Er will in dem 1. Skript OI durchlaufen lassen. Dabei wird die extern.au3 als unnötig angesehen.
    Du solltest diese Datei im includes-Ordner ablegen, dann wird diese auch korrekt erkannt.
    Wenn diese Datei im gleichen Ordner wie das Hauptskript liegt bin ich mir nicht sicher, ob sie erkannt wird.

  • Wenn diese Datei im gleichen Ordner wie das Hauptskript liegt bin ich mir nicht sicher, ob sie erkannt wird.

    Die Datei wird deshalb nicht eingelesen, weil die in dieser Datei enthaltenen Funktionen NICHT im Hauptscript enthalten sind!
    Ich warte immer noch auf die Antwort auf meine Frage, WO IM HAUPTSCRIPT die Funktionen stehen!

  • @ Andy:
    hab es nicht als frage aufgefasst sondern eher ein wenig wie eine anmache...


    bin halt noch sehr neu in autoit.


    für mich ist der Button Konnektor mit einer Funktion belegt.



    GUICtrlCreateButton("Konnektor", 10, 60, 100, 40)
    GUICtrlSetOnEvent(-1, "_exFunktionB")


  • Ich glaube ihr redet gerade aneinander vorbei.
    Ich verstehe stiffn so:
    Er will in dem 1. Skript OI durchlaufen lassen. Dabei wird die extern.au3 als unnötig angesehen.
    Du solltest diese Datei im includes-Ordner ablegen, dann wird diese auch korrekt erkannt.
    Wenn diese Datei im gleichen Ordner wie das Hauptskript liegt bin ich mir nicht sicher, ob sie erkannt wird.


    danke, werde ich testen


    Edit: nein - Andy hat schon recht, nur hab ich es mit meinem derzeitigen Kenntnissen nicht ganz verstanden.
    Wenn ich _exFunktionB() alleine in eine Zeile schreibe wird das auch von OI richtig erkannt und die extern.au3 als Notwendigen Include vermerkt.


    Verstehe nur noch nicht ganz wieso



    GUICtrlCreateButton("Konnektor", 10, 60, 100, 40)
    GUICtrlSetOnEvent(-1, "_exFunktionB")


    keine "echter" aufrufe der Funktion ist, sondern nur Text, wiederum das ganze dann doch funktioniert wenn ich den Button klicke?!

  • @stiffn,
    nein, das war keine Anmache! :D
    Anmache von mir sieht anders aus, glaubs mir....


    Wenn ich _exFunktionB() alleine in eine Zeile schreibe wird das auch von OI richtig erkannt und die extern.au3 als Notwendigen Include vermerkt.


    Genau so siehts aus.


    Das kommt daher, weil der AutoIt-Interpreter den "Text" innerhalb der Funktion GUICtrlSetOnEvent() als Funktion interpretiert, aber OrganizeInclude das NICHT macht!
    Du könntest OrganizeIncudes dahingehend erweitern bzw. abändern, allerdings würde das etwas aufwendig für einen Anfänger.


    Ich setze mich mal dran, habe OI sowieso schon mehrmals auf meine Belange angepasst....

  • Schön, dass es nun klappt.
    Als Tipp.
    Ich habe früher auch OrganizeIncludes verwendet.
    Allerdings verwende ich seit einiger Zeit dieses hier.
    Funktioniert meine ich besser. Ihr könnt es ja mal testen.


    Z. B. wird bei GUICtrlSetOnEvent auch die Funktion erkannt und das include korrekt eingefügt.

  • 2 Zeilen hinzugefügt, dann klappts auch mit OI


    Funktion ersetzen: