DLL Problem bei Imagesearch

  • Hallo zusammen,

    ich bin nicht ganz neu, was die Nutzung von Autoit angeht, allerdings auch kein Profi und habe ein Problem, welches mich schon ein paar Tage beschäftigt, weshalb ich nun hoffe bei euch eine Erklärung dafür zu finden.

    Ich arbeite gerade an einem selbstlernenden Programm, welches versucht Formen zu erkennen, zu speichern und wieder zu finden. Dafür habe ich zwei Funktionen, die für sich auch beide funktionieren, nur wenn ich sie kombiniere kommt ein Fehler dabei heraus, der die Imagesearch Funktion unterbricht und wie folgt lautet:

    Code
    $result= DllCall("ImageSearchDLL.dll", "str", "Imagesearch", "int" $x1, "int", $y1, "int" $right, "int", $bottom, "str", $findImage, "ptr", $HBMP) 
    ^Error
    
    
    Error: Variable used without being declared.


    Wie gesagt, für sich funktioniert die ImageSearch Funktion problemlos nur in Kombination mit den folgenden Funktionen nicht. Ich kann den Code leider nicht verkürzen, da ich nicht weiß, was mein Problem hervorruft. Ich wäre euch echt dankbar, wenn jemand mein Wissen mit zumindest einem hilfreichen Hinweis erhellen könnte.

    Viele Grüße und vielen Dank vorab an jeden der sich die Mühe macht hier mal drüber zu schauen.


    Lösung des Problems war: Entweder in Imagesearch die Variablen korrekt deklarieren oder aber die Anweisung "Opt("MustDeclareVars", 1)" entfernen

    Einmal editiert, zuletzt von Meeshaill (4. September 2015 um 22:50)

  • Ich habe noch etwas weiter nach Lösungen gesucht, bin damit allerdings wirklich überfragt. Das Problem scheint dadurch hervorgerufen zu werden, dass irgendein Handle geschlossen wird, den Imagesearch später noch verwenden will, vermute ich. Weiß denn niemand woran das liegen könnte?

    Oder könnte es sein, dass Opt("MustDeclareVars", 1) eine globale Einstellung ist, die dann wiederum negative Konsequenzen für Imagesearch hat, weil die Einstellung zu einem Fehler in Imagesearch führt?

  • Meinst Du mein Imagesearch Script? Falls ja, das sieht wie folgt aus:

    Die beiden Scripte werden einfach nur nacheinander aufgerufen. Also als erstes das Script im ersten Post und dann Imagesearch und wie gesagt, beide funktionieren für sich.

    Allerdings könnte es wohl wirklich an der " Opt("MustDeclareVars", 1)" Anweisung liegen. Das hatte ich bisher nicht bedacht, dass Imagesearch ohne klare Deklaration programmiert ist und es deshalb, weil diese Einstellung global ist zu Problemen kommt. Ich werde das gleich mal testen.


    Alles klar, es war tatsächlich die Einstellung, dass Variablen deklariert werden müssen. Vielleicht mache ich mein Imagesearch also mal wasserdicht bei Gelegenheit. Sorry für diese Tomaten auf den Augen :)


    Lösung des Problems war also: Entweder in Imagesearch die Variablen korrekt deklarieren oder aber die Anweisung "Opt("MustDeclareVars", 1)" entfernen

    2 Mal editiert, zuletzt von Meeshaill (4. September 2015 um 22:50)

    • Offizieller Beitrag

    Alle Variablen, die Du in den Funktionen verwendest, solltest Du als Local deklarieren, dann gibt es auch keine Probleme mit "MustDeclareVars".
    Im Hinblick auf mögliche spätere Fehler mit anderen Scripten ist das sowieso anzuraten, denn die Funktionen werden immer Probleme machen, wenn globale Variablen mit den gleichen Namen verwendet werden.