Hola tengo una funcion que me provoca stack over flow al cabo de unas horas y me gusatria reescribirla para que no lo provocara. Alguna idea?
Func Palante()
if $pala < 10 Then
$pala += 1
sleep(1000)
$resum = PixelSearch(688,79, 700, 87, 0x551771,3)
If Not @error Then
call ("andando")
Else
call ("Palante")
EndIf
Else
Print ("Mas de 10 secs reiniciando ")
call ("reinicio")
EndIf
EndFunc
kiero ke vaya buscando un determinado color en un cuadrito d la pantalla y ke kuando lo encuentre haga la funcion andando sino lo encuentra en 10 segundos kiero ke reinicie todo el script , lo ke pasa es ke a veces ese color tarda mas tiempo y aveces menos en salir, pero como mucho tarda 10 secs o no sale y no kiero esperar los 10 secs, kiero ke al segundo de aparecer haga la funcion andando
alguna idea de como reescribirlo
mis conocimientos son muy basicos
muchas gracias
problema con stack overflow- como reescribir esta secuencia
Re: problema con stack overflow- como reescribir esta secuen
Puedes esperar hasta que aparezca haciendo algo como esto.
Do
Sleep(1000)
$resum = PixelSearch(688,79, 700, 87, 0x551771,3)
until @error=0
saludos
Do
Sleep(1000)
$resum = PixelSearch(688,79, 700, 87, 0x551771,3)
until @error=0
saludos
- ............................................
......................................
Re: problema con stack overflow- como reescribir esta secuen
muchas gracias!!!
me da una idea pero no me lo resuelve del todo. Te explico lo que he hecho:
Func Palante()
if $pala < 10 Then
Do
$pala += 1
Sleep(1000)
$resum = PixelSearch(688,79, 700, 87, 0x551771,3)
until @error=0
call("andando")
Else
Print ("Mas de 10 secs reiniciando")
call ("reinicio)
EndIf
EndFunc
va bien cuando encuentra el color, pero si no lo encuentra en 10 secs se keda sumando segundos sin llamar a la funcion reinicio
¿hay alguna forma de romper el "do" a los 10 secs? supongo que el if que he puesto no es la forma correcta
me da una idea pero no me lo resuelve del todo. Te explico lo que he hecho:
Func Palante()
if $pala < 10 Then
Do
$pala += 1
Sleep(1000)
$resum = PixelSearch(688,79, 700, 87, 0x551771,3)
until @error=0
call("andando")
Else
Print ("Mas de 10 secs reiniciando")
call ("reinicio)
EndIf
EndFunc
va bien cuando encuentra el color, pero si no lo encuentra en 10 secs se keda sumando segundos sin llamar a la funcion reinicio
¿hay alguna forma de romper el "do" a los 10 secs? supongo que el if que he puesto no es la forma correcta
Re: problema con stack overflow- como reescribir esta secuen
Hola..
Estas utilizando mal el bucle, pruebalo así:
También puedes utilizar TimerInit() y TimerDiff() así:
Saludos..
Estas utilizando mal el bucle, pruebalo así:
Código: Seleccionar todo
Func Palante()
Local $i = 0
Do
Sleep(1000)
$resum = PixelSearch(688,79, 700, 87,
0x551771,3)
$i+=1
If $i>=10 then reinicio() ;si han pasado los 10 segundos
until @error=0
andando()
EndFunc
Código: Seleccionar todo
Func Palante()
Local $timer=TimerInit()
Do
$resum = PixelSearch(688,79, 700, 87,
0x551771,3)
If TimerDiff($timer)>=10000 Then _funcion2()
Until @error=0
_funcion1()
EndFunc
Re: problema con stack overflow- como reescribir esta secuen
muchas gracias voy a probarlo ahora mismo
:D
ahora a ponerlo unas horas para ver si n me da el error de stack over flow
MUCHAS GRACIAS!!!!!!
:D
testeado y chuta bien , tanto si lo encuentar en 10 secs como si noeditado
ahora a ponerlo unas horas para ver si n me da el error de stack over flow
MUCHAS GRACIAS!!!!!!