Welche #include - Dateien sind notwendig

  • Hallo Forum,

    habe trotz Suche hier im Forum und auch im Internet keine Antwort auf meine Frage gefunden. Vorgeschichte:
    wenn man ein etwas grösseres Projekt macht, nimmt man sich die notwendigen Funktionen aus verschiedenen anderen funktionierenden Programmen. Damit es läuft und schnell geht kopiert man einfach die kompletten #include Einträge ins neue Projekt. Dadurch bläht sich natürlich die Liste ganz schön auf.
    Frage: wie kann ich prüfen, welche #include - Aufrufe ich tatsächlich brauche.

    Auf die Idee mit auskommentieren, dann checken oder Programm laufen lassen und Fehler produzieren, bin ich schon gekommen - funktioniert aber nicht 100%. Vielleicht weis einer von den #PROFIS :D rat.

    Vielen Dank für jede ernst gemeinte Antwort.

  • Im Portal im Kasten Downloads findest du den Link zu OrganizeIncludes.
    Das kleine Tool checkt die Includes und dein Skript und sagt dir welche Includes du noch brauchst und welche unnötig sind.

    Auf die Idee mit auskommentieren, dann checken oder Programm laufen lassen und Fehler produzieren, bin ich schon gekommen - funktioniert aber nicht 100%.

    Was funktioniert daran nicht?
    Entweder es kompiliert - oder nicht.

  • @AspirinJunkie: besser hätte ich es nicht sagen können. ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Guten Morgen Schmunzel57,

    Ich komme als relativer Anfänger bisher ohne das Tool OrganizeIncludes aus und möchte nur als Ergänzung mitteilen, woher ich die Includes habe.

    Gerade als Anfänger klicke ich in SciTE einfach häufig einen Befehl an und drücke F1.
    Dadurch wird die Hilfe zu dem Befehl mit einem Beispiel angezeigt.
    In diesem Beispiel sehe ich dann schon das notwendige Include, wenn es nicht schon in der Beschreibung erwähnt wird (abgesehen von der obligatorischen MsgBoxConstants.au3 in den Beispielen, die ich dann doch nicht brauche).
    Bei Styles stehen die notwendigen Includes in der Style Tabelle über der Gruppe Styles, die du nutzen möchtest.

    Grüße autoiter

  • @AspirinJunkie: Vielen Dank mit dem Hinweis zu dem Tool OrganizeIncludes. Werde ich mal ausprobieren.


    autoiter: Mein Problem ist weniger welche Includes ich für das Script brauche, sondern mehr das es vielleicht zu viele sind (durch das Kopieren).

    [Erkenntnis: man lernt auch im Alter nie aus - ...57 = Baujahr = Alter]

  • Guten Morgen @Schmunzel57,

    Ja, benutze ruhig OrganizeIncludes. Wenn sich Profis damit auch behelfen, wird es schon richtig sein.
    Hintergrund für meine Antwort war aber, dass ich das Gefühl hatte, dass du als Anfänger vielleicht auch verstehen willst, wann du welche Includes brauchst (geht mir jedenfalls so)..
    Wie gesagt, die Includes stehen in der Hilfe und du kannst auch sehr einfach herausfinden, welche Includes du nicht benötigst.

    Wenn du einfach herausfinden willst, welche Includes du wirklich brauchst,würde es auch reichen, dass du die Includes einzeln auskommentierst und das Script startest.
    Wenn es vorher fehlerfrei startete. Wenn es nach dem Auskommentieren aber nicht mehr startet, sondern du die Meldung einer undeklarierten Variable oder eines undeklarierten Befehls erhältst, dann weißt du,
    A: Ich brauche das Include!
    B: Die angezeigte Variable (etwa ein Stil) oder der Befehl braucht dieses Include!

    Wenn das Script weiter fehlerfrei läuft, weißt du,
    C: Dieses Include brauche ich nicht.

    Grüße autoiter

    • Offizieller Beitrag

    @Schmunzel57 : Es ist völlig egal, wenn du zu viele includes in deinem Skript hast. Hauptsache zur Zeit der Entwicklung funktioniert alles.
    Wenn du dein Skript kompilierst und ein paar Bytes sparen willst, dann kannst du über die Au3Wrapper GUI (F7 in Scite) auf dem letzten Reiter Au3Stripper nutzen.
    Das Skript schmeißt alles raus, was du nicht benötigst.
    Organize Includes ist schon ein bisschen älter, sollte aber noch funktionieren. Das Skript fügt auch teilweise zu viele includes ein, da in den includes auch wieder includes enthalten sein können.
    Wie gesagt, ich würde mir da aber keine Gedanken machen und erst beim Compile dafür sorgen, dass dein Skript schlank bleibt.

  • Vielen Dank an alle, die zu dem Thema beigesteuert haben. Werde mich bei Gelegenheit mit den beiden Tips (Organize Includes und Au3Stripper) näher auseinander setzen.
    Für mich ist das Thema (die Frage) damit erledigt.
    P.S. wenn ich jetzt noch wüsste wie man Beiträge als erledigt kennzeichnet, würde ich so aussehen ... :D

  • Kleiner Tipp noch am Rande.
    Früher habe ich nur Organize Includes verwendet. Dieses funktioniert soweit sehr gut.

    Allerdings nutze ich mittlerweile nur noch den "Includes Helper"
    Dieser erkennt z. B. die oben angesprochenen includes in den includes.
    Außerdem meine ich, das OI bei manchen Standardvariablen nicht die richtigen Includes gefunden hat.

    Ihr könnt euch das Tool ja mal anschauen.

    • Offizieller Beitrag

    Dieser erkennt z. B. die oben angesprochenen includes in den includes.

    Nun, das ist aber kein Merkmal besonderer Güte, da es völlig wurscht ist, wenn man Includes einbindet, die ihrerseits von Includes bereits eingebunden werden. Dort wird überall #include-once genutz und somit zusätzlicher Overhead vermieden.
    Ich habe ja mal einen IncludeManager in Lua geschrieben. Das Problem Include-in-Include läßt sich sowieso nicht sauber auflösen, weil es nicht DIE Minimal-Include-Lösung gibt. Dadurch das verschiedene Includes innerhalb anderer Includes mehrfach auftauchen und diese wiederum andere Includes einbinden können beißt man sich beim rekursiven parsen der Dateien tatsächlich in den eigenen Hintern ;). Man muß den Includes eine Wertigkeit zuweisen um da eine Struktur zu bekommen.
    Ich habe das Programm allerdings nicht fertig gestellt, weil es damals Änderungen gab, wo die Strukturen dauernd geändert wurden.

    • Offizieller Beitrag

    Es gäbe ja auch noch die Alternative sowas zu machen:

    Spoiler anzeigen

    und dann ein Template zum Start eines neuen Skripts:

    AutoIt
    #include <includes.au3>

    Dann dauert der Start des Skripts zwar etwas länger, aber man braucht nie wieder includes zu suchen :)

  • @BugFix
    ist es wurscht wenn man includes doppelt einbindet.
    Trotzdem finde ich es im Scirpt übersichtlicher wenn so wenig wie möglich includes drin stehen.