Buenas chefito, si XD ya leí que la programación espagueti es un lió XD y que el Autoit es lenguaje estructurado, lo que yo quiero es algo parecido al Goto, Digamos en una palabra que lo que quiero es, que si se cumple un criterio determinado se suba arriba del código y lo vuelva a hacer otra vez todo.
Lo malo de llamar funciones con call por ejemplo, es que tengo que llamar a todas, "unas 14" por k lo que quiero es comprobar todas continuamente hasta que por fin un valor cambia y ya se reconduce por otro lado.
lo malo es que cada función tiene las mismas variables y cuando inicio el scrip como lee de arriba abajo lee variables ejecuta la función, sigue bajando, lee las mismas variables con otros datos y ejecuta la función, y así continuamente hasta que se topa con el grupo "Select" y sus condiciones. Bien que pasa si ejecuto una func ahora desde hay, pues que esa función va a tener guardada las ultimas variables leídas y no me da los datos que quiero. jjaja lo unico que quiero es una funcion para tirar arriba y que vuelva a leer si se cumple "X" nada mas jaja..
Saludos. Pongo un ejemplo.
Código: Seleccionar todo
;#############################################################################
_GDIPlus_Startup()
;$fname1=FileOpenDialog("First image","","All images(*.bmp;*.jpg;*.png;)")
$fname1 = @ScriptDir & "/captura.jpg"
If $fname1="" Then Exit
;$fname2=FileOpenDialog("Second image image","","All images(*.bmp;*.jpg;*.png;)")
$fname2 = @ScriptDir & "/captura1.jpg"
If $fname2= "" Then Exit
$bm1 = _GDIPlus_ImageLoadFromFile($fname1)
$bm2 = _GDIPlus_ImageLoadFromFile($fname2)
;################Variables##############
$var1= (var1($bm1, $bm2))
;################Variables##############
_GDIPlus_ImageDispose($bm1)
_GDIPlus_ImageDispose($bm2)
_GDIPlus_Shutdown()
Func var1($bm1, $bm2)
$Bm1W = _GDIPlus_ImageGetWidth($bm1)
$Bm1H = _GDIPlus_ImageGetHeight($bm1)
$BitmapData1 = _GDIPlus_BitmapLockBits($bm1, 0, 0, $Bm1W, $Bm1H, $GDIP_ILMREAD, $GDIP_PXF32RGB)
$Stride = DllStructGetData($BitmapData1, "Stride")
$Scan0 = DllStructGetData($BitmapData1, "Scan0")
$ptr1 = $Scan0
$size1 = ($Bm1H - 1) * $Stride + ($Bm1W - 1) * 4
$Bm2W = _GDIPlus_ImageGetWidth($bm2)
$Bm2H = _GDIPlus_ImageGetHeight($bm2)
$BitmapData2 = _GDIPlus_BitmapLockBits($bm2, 0, 0, $Bm2W, $Bm2H, $GDIP_ILMREAD, $GDIP_PXF32RGB)
$Stride = DllStructGetData($BitmapData2, "Stride")
$Scan0 = DllStructGetData($BitmapData2, "Scan0")
$ptr2 = $Scan0
$size2 = ($Bm2H - 1) * $Stride + ($Bm2W - 1) * 4
$smallest = $size1
If $size2 < $smallest Then $smallest = $size2
$call = DllCall("msvcrt.dll", "int:cdecl", "memcmp", "ptr", $ptr1, "ptr", $ptr2, "int", $smallest)
_GDIPlus_BitmapUnlockBits($bm1, $BitmapData1)
_GDIPlus_BitmapUnlockBits($bm2, $BitmapData2)
Return ($call[0]=0)
EndFunc ;==>CompareBitmaps
;#############################################################################
_GDIPlus_Startup()
;$fname1=FileOpenDialog("First image","","All images(*.bmp;*.jpg;*.png;)")
$fname1 = @ScriptDir & "/captura.jpg"
If $fname1="" Then Exit
;$fname2=FileOpenDialog("Second image image","","All images(*.bmp;*.jpg;*.png;)")
$fname2 = @ScriptDir & "/captura2.jpg"
If $fname2= "" Then Exit
$bm1 = _GDIPlus_ImageLoadFromFile($fname1)
$bm2 = _GDIPlus_ImageLoadFromFile($fname2)
;################Variables##############
$var2= (var2($bm1, $bm2))
;################Variables##############
_GDIPlus_ImageDispose($bm1)
_GDIPlus_ImageDispose($bm2)
_GDIPlus_Shutdown()
Func var2($bm1, $bm2)
$Bm1W = _GDIPlus_ImageGetWidth($bm1)
$Bm1H = _GDIPlus_ImageGetHeight($bm1)
$BitmapData1 = _GDIPlus_BitmapLockBits($bm1, 0, 0, $Bm1W, $Bm1H, $GDIP_ILMREAD, $GDIP_PXF32RGB)
$Stride = DllStructGetData($BitmapData1, "Stride")
$Scan0 = DllStructGetData($BitmapData1, "Scan0")
$ptr1 = $Scan0
$size1 = ($Bm1H - 1) * $Stride + ($Bm1W - 1) * 4
$Bm2W = _GDIPlus_ImageGetWidth($bm2)
$Bm2H = _GDIPlus_ImageGetHeight($bm2)
$BitmapData2 = _GDIPlus_BitmapLockBits($bm2, 0, 0, $Bm2W, $Bm2H, $GDIP_ILMREAD, $GDIP_PXF32RGB)
$Stride = DllStructGetData($BitmapData2, "Stride")
$Scan0 = DllStructGetData($BitmapData2, "Scan0")
$ptr2 = $Scan0
$size2 = ($Bm2H - 1) * $Stride + ($Bm2W - 1) * 4
$smallest = $size1
If $size2 < $smallest Then $smallest = $size2
$call = DllCall("msvcrt.dll", "int:cdecl", "memcmp", "ptr", $ptr1, "ptr", $ptr2, "int", $smallest)
_GDIPlus_BitmapUnlockBits($bm1, $BitmapData1)
_GDIPlus_BitmapUnlockBits($bm2, $BitmapData2)
Return ($call[0]=0)
EndFunc ;==>CompareBitmaps
;#############################################################################
$bucle = 1
Select
Case $var1= True ;1
MsgBox(0, "Ejemplo", "la foto 1 coincide")
Case $var2= True ;2
MsgBox(0, "Ejemplo", "la foto 2 coincide")
Case $bucle = 1
MsgBox(0, "Ejemplo", "No coinciden ninguna foto")
Ejecutar desde el principio el scrip
EndSelect