Página 1 de 1

Se puede reutilizar código asignándolo como una funcion

Publicado: 16 Nov 2015, 20:23
por jonai
Hola esta es mi primera pregunta aunque entiendo que no será la última

Estoy haciendo una macro (no me atrevo a llamarla programa ya que mi nivel de programación es cercano al 0) y quisiera saber si es posible reutilizar parte del código como si fuera una función.

Ejemplo:

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <IE.au3>


		 WinSetState ( "pruebas.txt: Bloc de notas", "", @SW_MAXIMIZE ) ; SOLO PARA PRUEBAS EN CASA
		 WinActivate ( "pruebas.txt: Bloc de notas" ) ; SOLO PARA PRUEBAS EN CASA


Func copiocomparo() ; txtprueba
   		 Send ("{ALT}+{e}")
		 ;Sleep(10)
		 Send ("{t}")
		 ;Sleep(10)
		 Send ("{ALT}+{e}")
		 ;Sleep(10)
		 Send ("{ALT}+{o}")
		 ;Sleep(10)
		 $comparativo = ClipGet()
EndFunc



Local $i = 0
Local $times = 0
Do
		 Call ("copiocomparo")



; Hemos copiado la pantalla y comparamos si existe Si es asi estamos en la pantalla correcta y seguimos enviando el dni
; Lo intentara 10 veces para ver si es la pantalla correcta pero tambien por si el sistema está muy lento

   If StringRegExp($comparativo, "texto que debe existir para lanzar los comandos") Then

	  Send("{TAB}")
	  Send("{TAB}")
	  Send ( $lprevio )
	  Send ( $data1 )
	  Send("{TAB}")
	  Send ( $data11 )
	  Send ("{ENTER}")
	   ; envio dni
	   $i = 1
   Else
							  ;MsgBox(0, "test", "No Coincide")
	  Sleep(100)
	  $times = $times + 1
   EndIf

   Until $i = 1  Or $times = 10; Increase the value of $i until it equals the value of 10.


If $times = 10 Then
   MsgBox(0, "INFO", "No estás en la pantalla adecuada o el Sistema está muy lento")
   Continueloop
   EndIf


También, y sólo si puede ser decidme si el código en si es buena idea o hay alguna forma mejor de hacerlo. Os comento la idea:

Es una macro que dependiendo de la pantalla dónde esté hará una cosa u otra. La única forma de saber dónde estoy es copiando la pantalla y comprobando si existe un determinado texto o no (por eso lo de la función). Por otro lado no puedo saber si la pantalla está cargada o no (por eso lo repito 10 veces el bucle).
En casa no lo puedo probar porque se trata de un programa muy antiguo de la red del trabajo (y no cambia, al menos a simple vista absolutamente nada). Y en el trabajo no puedo acceder al foro porque está capado.

En fin espero vuestra ayuda, y muchas gracias por adelantado

Re: Se puede reutilizar código asignándolo como una funcion

Publicado: 22 Nov 2015, 15:42
por BasicOs
Hola,
Puedes pasar casi cualquier cosa a una función, es más a nivel organizativo muy recomendable. En el código que publicas mejor pon las funciones al final, y en vez de un bucle puedes hacer varias llamadas a la función con sleep() en escalera, los primeros tardan más porque hay menos probabilidad que esté la página, y los últimos menos, incluso hacer un bucle en el último sleep() con tiempo 1 segundo (1000)
En el menú del Scite busca Tidy para que te limpie y ordene automaticamente el texto.
Salu22:)