FileFind... funktioniert nach dem Kopilieren nicht wie vorher

  • ich hab ein Problem:

    wenn ich das script per rechtsklick ausführe wird mein (Windows 7 Minianwendungen) Gadget installiert.
    Wenn ich nun aber das script Compiliere und die exe ausführe gibt er mir "meine" Fehlermeldung: "Es wurde kein Gadget gefunden!" ?(

    da ich im grunde noch ein noob in sachen autoit und programierung algemein bin weiss ich beim besten willen nicht weiter

    würde mich freuen wenn mir da einer aus der patsche helfen könnte :D

  • startest Du die kompilierte exe aus dem Scriptdir Verzeichnis ?

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • Wenn man keinen Pfad angibt wird bei Funktionen welche einen Pfad erwarten das Arbeitsverzeichnis des Programmes verwendet.
    Dieses muss nicht dem Skriptverzeichnis entsprechen.
    Abfragen könntest du das ganze so:

    [autoit]

    If @WorkingDir <> @ScriptDir Then MsgBox(0,"Fehler", "Arbeitsverzeichnis != Programmverzeichnis")

    [/autoit]


    Beheben so:

    [autoit]

    FileChangeDir(@ScriptDir)

    [/autoit]


    Oder gleich dein FileFindFirstFile unabhängig vom WorkingDir machen:

    [autoit]

    $search = FileFindFirstFile(@ScriptDir & "\*.gadget")

    [/autoit]


    Etwas anderes fällt mir am Skript erstmal nicht auf.
    Kann mir also nur vorstellen dass entweder das WorkingDir verstellt wurde oder es tatsächlich keine .gadget-Datei gibt im Verzeichnis (ruhig mal in einer Message-Box @ScriptDir ausgeben damit du weißt ob du wirklich im richtigen Verzeichnis arbeitest).

    Dann noch vielleicht 2 Tipps:
    Die Zeile If $file = @ScriptName Then ContinueLoop brauchst du nicht da eh nur nach .gadget-Dateien gesucht wird und dein Skript nur die Endungen .exe oder .au3 annehmen kann.
    Der Funktion inst() lieber den Dateinamen als Parameter übergeben anstatt mit globalen Variablen zu arbeiten.
    Bei so kleinen Skripten mag das noch gehen aber ab einer gewissen Größe kann es schnell zu Mehrdeutigkeiten kommen.
    Außerdem sind lokale Variablen nach Aufruf einer Funktion wieder aus dem Speicher raus.