Brauche eine "kleine" Hilfestellung

  • Halo, vielleicht könnt ihr mir bei meinem Problem helfen:

    Wie kann ich es hier realisieren, daß die innere While-Schleife abgebrochen wird, sobald PixelSearch die entsprechende farbe gefunden hat?
    So klappt alles einwandfrei, außer daß er halt die volle Schleife durchläuft.
    Ich habe schon einige Sachen ausprobiert, aber er läuft immer die volle schleife durch.
    Wäre dankbar, wenn mir da einer helfen könnte

    Einmal editiert, zuletzt von Amras (25. Februar 2008 um 21:00)

  • ExitLoop habe ich schon ausprobiert, aber vielleicht habe ich es auch falsch angewendet.

    Ich habe es direkt nach

    Code
    If PixelSearch($linke, $obere, $rechte, $untere, 0x7F2503, 0) > 1 Then
    If $usedTime = 7 Then
    Sleep(Random(500, 6000, 1))
    Else
    Sleep($usedTime)
    EndIf
    Send ("{F4 down}")
    Sleep(50)
    Send ("{F4 up}")

    eingefügt, aber das hat die Schleife auch nicht beendet..... das ist ja das Problem bei mir....

  • Hi,

    Also ich würd den Code ja etwas aufräumen, aber kann nicht wirklich so den Ablauf der Funktion verfolgen,
    also du willst mit Counter ja sagen, wie oft das ganze passiern soll, also wie oft die Funktion durchlaufen soll.
    Dann würde ich das aber mit einer For Loop machen ( For $i = 1 to $counter ).
    Bei deiner aktuellen Funktion wird dir ExitLoop ja nicht helfen, weil dann ja die Funktion immer wieder durchläuft bis counter 0 ist.
    Wenn du aber bei nem Fund Return 1 machst, gibt sie natürlich 1 zurück und wir beendet.

    greetz

  • Naja, ob ich das jetzt mit einer Schleife oder rekursiv löse ist ja nicht wirklich von Bedeutung.

    -Die Funktion soll auf jeden Fall so oft durchlaufen werden, wie $counter es vorgibt.

    Was mein Problem einfach ist, daß die innere While-Schleife die vollen 5000 durchläufe macht,
    ich die aber gerne vorher abbrechen möchte wenn PixelSearch an der angegebenen Position
    die definierte Frabe findet.
    Dann soll wieder ganz normal die Funktion durchlaufen werden nur mit $counter -1.
    Die Innere Whileschleife gibt mir mehr oder weniger nur die maximale erlaubte Zeit für EINEN
    FUNKTIONSdurchlauf vor was bei 5000*50 ms = ca 4min ergibt.
    Da aber PixelSearch schon nach wenigen sec bis ein paar min zu einem Ergebnis kommen kann
    soll er die while-Schleife vorher beenden und die FUNKTION erneut aufrufen

    Ich habe auch schon versucht eine 2. Variable einzubauen:
    zB wie bei $i = 5000 eine zB $x = 0 zu setzen, und diese in der IF-Anweisung des PixelSearch
    auf $x = 1 zu setzten und die Bedingung der While-Schleife anzupassen.
    Allerdings wird die Änderung der Variablen nicht erkannt....... was mich etwas verwundert, da die
    Send() Befehle vorher ohne Probleme funktionieren.

    2 Mal editiert, zuletzt von Amras (20. Februar 2008 um 22:28)