Página 1 de 1

Comparar Datos

Publicado: 31 May 2010, 14:05
por Autoiter
Hola a todos.
Antes que nada quiero felicitarlos por este fantástico foro. Realmente es muy útil. :smt041 :smt041

Debo comentar estoy iniciando un proyecto en el que debo interactuar con varias páginas web. Buscando herramientas que me ayuden en esta taréa, descubrí Autoit y me sorprendió lo fácil que resulta realizar ciertas cosas con un conocimiento ínfimo como el mío.
( olvidé decir que soy totalmente novato en esto de la programación).

Hace tres días que estoy con Autoit y leyendo el foro y la ayuda, he logrado hacer un par de scripts que acomodan las ventanas tal como las necesito y "leen" la información visual de la pantalla devolviendome la información buscada. :smt003

Ahora la duda. Si bien he buscado, debido a mi desconocimiento del vocabulario no he llegado a una respuesta satisfactoria.

Necesito comparar un dato obtenido mediante la función PixelGetColor con un listado de 50 respuestas posibles.

Ya tengo asignadas las constantes de las 50 posibles respuestas y obtengo la información de la pantalla, pero no sé como hacer que el script me dé como respuesta que el color del pixel corresponde al número "x" de la lista.

Muchisimas gracias desde ya. :smt039

Re: Comparar Datos

Publicado: 31 May 2010, 16:16
por BasicOs
Bienvenido,
si muestras tu código puede ser más clarificador, :smt023 :smt023

si te he entendido bien parece que lo que necesitas sería:

A nivel muy básico (hay muchas otras maneras), sería con un
select Case (o si no lo usas, también muchos IF/THEN), donde pones en cada opción del case un msgbox() con el número de respuesta o mejor una variable solución es igual $solucion=1
o con el 2, 3, 4, etc.. y al final el msgbox()

Otras maneras serían asignarlos a una matriz y luego con un for /next o while wend hacer la comparación de los valores.
Salu22:)

Re: Comparar Datos

Publicado: 31 May 2010, 20:51
por Autoiter
Gracias BasicOs.
Lo de If / Then, se me había ocurrido, pero esperaba que hubiera una manera menos "trabajosa". :smt003
Voy a probar con las otras variantes, a ver que sale.

gracias

Re: Comparar Datos

Publicado: 01 Jun 2010, 08:15
por Ximorro
Otra manera es meter todos los valores en una matriz (vector) y luego buscarlo con un bucle, eso te daría el índice en el vector, es decir "el número x de la lista".

El código queda más compacto que con el select.

Por ejemplo esto busca el número 89 en una lista de 6 números, también te dice si no lo encuentra. Da la posición natural, por eso sumo 1 al índice, que comieza por cero, en vez de uno, pero eso se hace o no dependiendo de lo que te interese.

Código: Seleccionar todo

Global $lista[6] = [12, 45, 67, 89, 13, 47]
Global $busco = 89, $encontrado = False
For $i = 0 To UBound($lista)-1
	If $lista[$i] = $busco Then
		$encontrado = True
		ExitLoop
	EndIf
Next
If $encontrado Then
	ConsoleWrite("Encontrado en posición número " & ($i+1) & @LF)
Else
	ConsoleWrite("Número no encontrado en la lista." & @LF)
EndIf
Si no os gustan mucho los ExitLoop, por supuesto se puede hacer en un WHILE en vez de un FOR.

Re: Comparar Datos

Publicado: 01 Jun 2010, 14:34
por Autoiter
Hola Ximorro.
Ya lo he hecho del modo "Picapiedra", :smt003, buscado con If /Then en cada uno de los posibles resultados.
No obstante, "Funciona".

Tu respuesta es lo que estaba buscando. Algo más sutil.

Probaré con ella. Muchisimas Gracias.

Re: Comparar Datos

Publicado: 01 Jun 2010, 23:53
por BasicOs
Autoiter escribió:Hola Ximorro.
Ya lo he hecho del modo "Picapiedra", :smt003, buscado con If /Then en cada uno de los posibles resultados.
No obstante, "Funciona".

Tu respuesta es lo que estaba buscando. Algo más sutil.

Probaré con ella. Muchisimas Gracias.
Ciertamente el IF/THEN si te funciona, puedes aprender e ir cogiendo parte del otro código.
Desde algo tan sencillo como if-then y el while/wend, puedes hacer casi cualquier cosa, y luego puedes hacer cosas más "vistosas" o derivarlo y ahorrar lineas de código haciendo multiples funciones o usando otros comandos, estos comandos al final son funciones de funciones de otras funciones. Eso es la ventaja del lenguaje que te permite adaptarlo a tus necesidades o complejidad.

No necesitas hacerlo de golpe, sino según lo vayas asimilando y comprendiendo,
Felicidades por conseguirlo de una manera o de otra. :smt041 :smt041 :smt041 :smt041 :smt041
Salu22:)

Re: Comparar Datos

Publicado: 02 Jun 2010, 08:11
por Ximorro
Muy bien así se aprende.

Te recomiendo probar el sistema de la matriz porque ahí es más cómodo ampliar la lista con valores nuevos, por ejemplo. Y el código queda más elegante y compacto. Por supuesto si tienes problemas para adaptarlo sólo tienes que decirlo.

Ojo al declarar la matriz, cuando se hace inicializándola con los valores hay que decir cuántos elementos tiene:
Global $lista[6] = [12, 45, 67, 89, 13, 47]
Pero si pongo 4:
Global $lista[4] = [12, 45, 67, 47]
Si pongo 100:
Global $lista[100] = [12, 45, 67, 89, 13, 47,... (hasta los 100 valores)]

Eso sí, cuando se accede a los valores de una matriz, el primer elemento está en la posición 0 (CERO), así que el último está en la posición "número de elementos menos uno".

Ya nos dirás.

Re: Comparar Datos

Publicado: 02 Jun 2010, 13:23
por Autoiter
Gracias BasicOs y Ximorro. Su ayuda fué muy importante.

En cuanto se me pase un poco la ansiedad de ir viendo los resultados saliendo en las ventanitas, me pondré a mejorar el código con sus consejos.

:smt003