Depuración de errores (MiBiciPublica - MiValenbisi)

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Depuración de errores (MiBiciPublica - MiValenbisi)

Mensaje por jamaro »

Hola a todos de nuevo:

He realizado una pequeña aplicación que devuelve los datos de bicicletas públicas de Valencia disponibles en unas estaciones concretas (números de estación guardados en archivo .ini).

Yo lo estoy utilizando sin problemas, pero al pasarlo a familiares, han obtenido algún error. En concreto "Error: Error in expression" Line 350 (File ......exe)

¿Cómo puedo reproducir el error?
¿Cómo identifico la línea 350 del archivo exe en mi archivo au3?
¿Qué debería añadir en mi fichero au3 para saber exactamente dónde está el error y poder depurarlo?

Un saludo y gracias.

EDITADO: He modificado el título del hilo, ya que las preguntas que voy haciendo son todas sobre el mismo programa-código.
Última edición por jamaro el 27 Mar 2011, 16:21, editado 2 veces en total.
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Depuración de errores

Mensaje por Chefito »

MIra la línea 350 de tu código script a ver que puede pasar.
Si no ves nada, cuelga el script o la línea en el foro (casi seguro que solo con la línea no sepamos decirte que puede pasar) a ver si sabemos decirte porque puede dar ese error.

Aunque la forma más eficaz, es llevarte el script a un ordenador que falle y ver desde ahí todos los errores del código, para ir corrigiendolos.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Depuración de errores

Mensaje por BasicOs »

jamaro escribió:Hola a todos de nuevo:

He realizado una pequeña aplicación que devuelve los datos de bicicletas públicas de Valencia disponibles en unas estaciones concretas (números de estación guardados en archivo .ini).

Yo lo estoy utilizando sin problemas, pero al pasarlo a familiares, han obtenido algún error. En concreto "Error: Error in expression" Line 350 (File ......exe)

¿Cómo puedo reproducir el error?
¿Cómo identifico la línea 350 del archivo exe en mi archivo au3?
¿Qué debería añadir en mi fichero au3 para saber exactamente dónde está el error y poder depurarlo?

Un saludo y gracias.
Estas usando un editor especializado?. Si usas el Koda te da el número de linea para localizar la expresión y ver donde falta una coma o falta un parámetro. Tambien tiene el Tidy y otras herramientas para comprobar el código y depurar.
Creo que con esto salta el error, y si no lo ves escribe la función copiandola desde la ayuda es decir desde el ejemplo que te pone y rellenalo con tus datos ;)
El Koda te viene de serie, y puedes ampliarlo desde downloads de www.autoitscript.com, también copiando la ayuda en español ;
Avisa si lo conseguiste?
Salu22:)
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: Depuración de errores

Mensaje por jamaro »

Gracias por las respuestas.

El primer fallo que he cometido, es haber seguido trabajando en el programa y creado nuevos exe, sin guardar una copia exacta del que he pasado a los amigos y familiares. Con lo cual, ya no coincidirá ninguna línea.

Subo el código y los "include" y así lo probáis en vuestros ordenadores, por si os da algún error similar.

En cuanto a las herramientas, uso Koda (aunque en este programa no lo he utilizado) y el Tidy no lo conocía (puede ser interesante para "limpiar" el código).

Un saludo.
MiValenbisi_Foro.au3
Código del programa.
(16.1 KiB) Descargado 203 veces
_misfunc.au3
Algunas funciones que se utilizan en el código (abreviaturas de consolewrite y msgbox)
(2.35 KiB) Descargado 174 veces
_XMLDomWrapper.au3
UDF utilizada para leer datos XML de una página web o archivo XML.
(74.28 KiB) Descargado 229 veces
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Depuración de errores

Mensaje por BasicOs »

Pasando el Au3Check, te saltan errores de las declaraciones de variables, por ejemplo la $Debug, está despues de las declaraciones de au3 anteriores, en cambio en estos se nombre a la variable.

En cambio al ejecutarlo va bien, porque no chequea tan a fondo como el Au3Check.
Prueba a instalar encima el autoit de downloads y luego Scite completo que está debajo.

En vez de ejecutarlo directamente, prueba a ejecutar en modo no compilado con el F5 (run) del Scite, Ahí te saltan estos errores, que son simples declaraciones o Warnings, pero total se pueden quitar facilmente. (hay un error no obstante).
El error que me comentas de familiares no me sale.
Felicidades por el código, parece que pinta bien, y falta algún retoque.
Salu22:)
Errores de declaración que salen con el F5 del Scite:
D:\hd\Descargas\_misfunc.au3(16,15) : WARNING: $DebugIt: possibly used before declaration.
if $DebugIt=
~~~~~~~~~~~^
D:\hd\Descargas\MiValenbisi_Foro (1).au3(107,31) : WARNING: $estaciones: possibly used before declaration.
for $a=0 to UBound($estaciones)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
D:\hd\Descargas\MiValenbisi_Foro (1).au3(109,45) : WARNING: $num_estacion: possibly used before declaration.
$datoslibres=leelibres($num_estacion[$a][0])
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
D:\hd\Descargas\MiValenbisi_Foro (1).au3(221,89) : WARNING: $return possibly not declared/created yet
$return = StringMid($file[$line], $hstarta, $end - $hstarta)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
D:\hd\Descargas\MiValenbisi_Foro (1).au3(224,66) : WARNING: $ends possibly not declared/created yet
$ends = StringInStr($file[$line], '>', 0)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
D:\hd\Descargas\MiValenbisi_Foro (1).au3(244,27) : ERROR: EditaEstaciones() called by a previous line with 0 arg(s). Min = 1. First previous line calling this Func is 88.
Func EditaEstaciones($var)
~~~~~~~~~~~~~~~~~~~~~~~~~~^
D:\hd\Descargas\MiValenbisi_Foro (1).au3(257,25) : WARNING: $archivoini: possibly used before declaration.
IniWrite($archivoini,
~~~~~~~~~~~~~~~~~~~~^
D:\hd\Descargas\MiValenbisi_Foro (1).au3 - 1 error(s), 6 warning(s)
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: Depuración de errores

Mensaje por jamaro »

Gracias BasicOs:

La verdad es que utilizaba un Scite con menos opciones, y vi que en otra carpeta me había bajado alguna vez otra versión de Scite que, efectivamente, tiene Tidy y Au3Check en el menú de herramientas.

Hasta ahora, en Scite, al ejecutar con F5, me salían errores, pero la última versión no tenía ninguno y con Au3Check, se ha detectado "warnings" y, como dices, un "error".

Voy a echar un vistazo y lo corrijo.

En cuanto al error que comento en el primer mensaje, creo que les sucedió cuando intentaba leer los datos de la página web. Me dijeron que probablemente es que estuvo intentando leer durante un tiempo y terminó dando el error.

Voy a modificar lo que me dice Au3Check.....

Saludos y más gracias.

Ya he revisado un poco el código con Au3Check:

La mayoría de los "warnings" son porque en la función Principal() hay variables globales que se han definido en otras funciones ¿sería mejor sacar todas las globales al principio del código? Me resultaba más "legible" si dentro de una función definía las variables que empezaban a utilizarse con dicha función.

Por otro lado, el error que lanza sobre los argumentos de EditaEstaciones($var) viene porque se llama desde un evento de un menú contextual de esta manera:
GUICtrlSetOnEvent(-1,"EditaEstaciones")
La variable $var es una Global y se define en la función LeeDatosIni(), la cuál es la primera función en ejecutarse, incluso antes de definir el GUI donde se define el menú y el evento anterior. ¿Cuál sería la manera correcta de hacerlo? He probado a poner GUICtrlSetOnEvent(-1,"EditaEstaciones($var)"), pero entonces el error que se obtiene es: ERROR: EditaEstaciones($var)(): undefined function.

Saludos
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Depuración de errores

Mensaje por Ximorro »

Sí, revisa las declaraciones de variables y eliminarás potenciales problemas. (por ejemplo $DebugIt declárala dentro de _misfunc.au3, que es donde se usa, y no del principal (encima está antes del MustDeclareVars) ;-)

$return y $ends falta que las declares localmente en la función.
$archivoini la declaras Global ¡dentro de una función!. Eso no está prohibido por el lenguaje, pero puede dar problemas inesperados, igual que el uso de DIM (mira nota al final), declara las globales al principio del programa fuera de funciones.
$estaciones y $numestaciones no las he mirado, pero será algo parecido.

Además como indica BasicOS hay UN ERROR, y eso es importante:

Código: Seleccionar todo

MiValenbisi_Foro.au3(243,27) : ERROR: EditaEstaciones() called by a previous line with 0 arg(s). Min = 1. First previous line calling this Func is 87.
Func EditaEstaciones($var)
~~~~~~~~~~~~~~~~~~~~~~~~~~^
Resulta que esta función se usa como respuesta al evento del menú de contexto $ItemEditarEstaciones. Una función de evento ¡no recibe parámetros! (aunque recibe datos en macros, como el control en el que se ha disparado el evento).
Pero tú la defines con un parámetro $var, que lógicamente no se rellena al hace la llamada desde el evento...

Y a pesar de todo esto (que te recomiendo arreglar) creo que el error original puede ser diferente, si a ti te funciona y en otros sitios no es fácil que se trate de algo en el entorno que se te ha olvidado. Nos pasa muchas veces a los programadores, en nuestro ordenador van las cosas porque hemos hecho muchas pruebas y a lo mejor tenemos archivos INI bases de datos ya preparados que van perfectamente, pero en una instalación nueva en otro ordenador eso no está disponible o no tiene el mismo formato. O por ejemplo si estás leyendo páginas web puede que debido a restricciones de acceso no las estén recuperando bien y tu parseador de xml se está volviendo loco. Cosas así.

Como dice Chefito, ¡esa línea 350 seguramente era la de tu au3! Así que eso es utilísimo para atacar el problema. Te recomiendo que les pases un nuevo exe con el último código (o si lo modificas guarda una copia de seguridad) para ver dónde les está fallando.
No es necesariamente un error de sintaxis en el programa, de hecho no creo que lo sea.
(Bueno, ahí cerca tienes un Global $num_estacion [UBound($estaciones)][5] ¡dentro de una función, no declares variables globales dentro de funciones!)

NOTA: Un consejo, esto no es un error pero es recomendable que no uses DIM para declarar variables, usa LOCAL o GLOBAL según corresponda. DIM está en AutoIt por cuestiones históricas y se mantiene por compatibilidad, pero en la propia ayuda de AutoIt desaconsejan su uso. (Dim declara variables locales o reutiliza globales existentes así que podría ser que no estés usando la variable que crees).
De la ayuda:
You should use Local or Global, instead of Dim, to explicitly state which scope is desired for a variable/constant/array.
O sea
Deberías usar Local o Global, en vez de Dim, para declarar explícitamente qué ámbito se desea para la variable/constante/matriz.



Por cierto te lo curras mogollón, y encima con xml, bases de datos... ójala compartas tus programas de uso más general en el foro porque seguro que nos dejas con la boca abierta. ¡Buen trabajo! (este no va perfecto pero sólo hay que depurarlo un poquitín ¿a quién le funciona un código a la primera?)
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Depuración de errores

Mensaje por Ximorro »

Vaya, como he estado mucho tiempo con el editor abierto resulta que estabas escribiendo tú también y ya habías visto algunas cosas que te cuento, pero yo no llegué a ver tu comentario... bueno ¡pues paso de borrarlo! :smt002 Quizás de lo demás encuentres algo úlil.

Si $var es una variable global no la definas como parámetro, pues entonces $var dentro de esa función vale lo que le pasas como parámetro, no lo que valga la variable global. Pero es que no puedes pasarle el parámetro, al ser disparada por un evento.
Usa la variable global directamente, y la función que no reciba parámetros. Y sí, mejor la declaras fuera de funciones, aunque la definas (des un valor) en otro sitio.

Saludos!
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: Depuración de errores

Mensaje por jamaro »

Ximorro escribió:Sí, revisa las declaraciones de variables y eliminarás potenciales problemas. (por ejemplo $DebugIt declárala dentro de _misfunc.au3, que es donde se usa, y no del principal (encima está antes del MustDeclareVars) ;-)
He eliminado $Debugit y lo he puesto como argumento en las funciones mb y cw que lo utilizan dentro de _misfunc.au3 (esto de _misfunc era por ir jugando con una UDF propia :-))

Ahora en _misfunc.au3 tengo, por ejemplo la función func mb($mensaje,$Debugit=1,$linea=@ScriptLineNumber) ; Abreviatura de MsgBox, pudiendo llamarla mb(mensaje) (haría MsgBox mostrando el número de línea) o mb(mensaje,cualquiercosa) (haría MsgBox sencillo)
$return y $ends falta que las declares localmente en la función.
$archivoini la declaras Global ¡dentro de una función!. Eso no está prohibido por el lenguaje, pero puede dar problemas inesperados, igual que el uso de DIM (mira nota al final), declara las globales al principio del programa fuera de funciones.
$estaciones y $numestaciones no las he mirado, pero será algo parecido.
La mayoría se han corregido declarándolas al principio, pero ¿qué hago con $num_estacion? La declaro (ahora ya sé que mal) dentro de la función LeeDatosIni(): Global $num_estacion[UBound($estaciones)][5] ;Estación, Dirección, BicisLibres, BornetasLibres, BornetasTotales
Pero lo hago aquí dentro porque hasta que no ejecuto LeeDatosIni, no sé el tamaño de la matriz, ya que lee los datos de un archivo ini.
Además como indica BasicOS hay UN ERROR, y eso es importante:

Código: Seleccionar todo

MiValenbisi_Foro.au3(243,27) : ERROR: EditaEstaciones() called by a previous line with 0 arg(s). Min = 1. First previous line calling this Func is 87.
Func EditaEstaciones($var)
~~~~~~~~~~~~~~~~~~~~~~~~~~^
Resulta que esta función se usa como respuesta al evento del menú de contexto $ItemEditarEstaciones. Una función de evento ¡no recibe parámetros! (aunque recibe datos en macros, como el control en el que se ha disparado el evento).
Pero tú la defines con un parámetro $var, que lógicamente no se rellena al hace la llamada desde el evento...
Corregido ;-)
Como dice Chefito, ¡esa línea 350 seguramente era la de tu au3! Así que eso es utilísimo para atacar el problema. Te recomiendo que les pases un nuevo exe con el último código (o si lo modificas guarda una copia de seguridad) para ver dónde les está fallando.
No es necesariamente un error de sintaxis en el programa, de hecho no creo que lo sea.
(Bueno, ahí cerca tienes un Global $num_estacion [UBound($estaciones)][5] ¡dentro de una función, no declares variables globales dentro de funciones!)
Creo que el error que ha surgido en otro ordenador debe estar por ahí, ya que a mí, en alguna ocasión, ejecutando el .au3, me ha dado un error en esa función diciendo algo sobre el tamaño de la matriz (quizás no en todos los casos se define bien).
NOTA: Un consejo, esto no es un error pero es recomendable que no uses DIM para declarar variables, usa LOCAL o GLOBAL según corresponda. (...)
Tomo nota. He cambiado los DIM por LOCAL y espero hacerlo desde ahora.
Por cierto te lo curras mogollón, y encima con xml, bases de datos... ójala compartas tus programas de uso más general en el foro porque seguro que nos dejas con la boca abierta. ¡Buen trabajo! (este no va perfecto pero sólo hay que depurarlo un poquitín ¿a quién le funciona un código a la primera?)
Gracias. Las partes de XML, evidentemente, son sacadas de los foros. He querido poner como comentario, antes de las funciones de XML, la dirección del hilo de donde se ha sacado, ya que además puede sernos útil a todos cuando revisamos el código.

Os dejo de nuevo el código corregido (según Au3Check, sin "error", pero con un "warning").
A ver qué me recomendáis hacer con Global $num_estacion [UBound($estaciones)][5]

Saludos.
MiValenbisi.au3
Código corregido según las indicaciones y "arreglado" con Tidy.
(16.21 KiB) Descargado 189 veces
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Depuración de errores

Mensaje por BasicOs »

Muy bien comentado el programa, gracias por compartirlo.
Creo que lo más suyo si quieres tener ordenadas las variables al principio del programa, puedes usar global al principio.

Tampoco necesitas declarar las variables si no cuando las vas a usar si son para tenerlas, dentro de funciones y devolver datos de funciones con Return ..

Código: Seleccionar todo

ReDim $num_estacion[UBound($estaciones)][5] ;Estación, Dirección, BicisLibres, BornetasLibres, BornetasTotales
Casi usaría los select con Sqlite pero con Ini funciona también bien, con las funciones leer ini y poniendo todo en matrices (Arrays)
Salu22:)
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Depuración de errores

Mensaje por Ximorro »

Sí, declara globalmente al principio del programa.
Global $num_estacion[1][1]

Y luego haces el Redim dentro de la función, eso no declara una nueva sino que redimensiona la global. Redim no es como Dim, Redim es para redimensionar una matriz QUE YA EXISTE, no declara nada nuevo.

Ciertamente en AutoIt se pueden crear variables al vuelo, pero es muy peligroso. La experiencia me dice que es mucho mejor poner, tal como has hecho:
Opt("MustDeclareVars", 1)
(bueno, has puesto AutoItSetOption, pero Opt es equivalente, y de hecho lo usas luego).

De esta manera cuando el compilador (realmente au3Check) nos da warnings y errores sobre las variables, es probablemente porque hemos hecho algo mal y vale la pena revisarlo, aunque "sólo" sea un warning. Con lo fácil que es equivocarse al escribir el nombre de una variable, ¡si no tienes el MustDeclareVars no te avisa!

Yo también suelo tener cuidado de declarar variables globales o locales según sea el ámbito real de la variable. Pongo las globales al principio para tenerlas controladas, y les pongo nombres adecuados. Por ejemplo aquella $var que era parámetro, al hacerla global yo le cambiaría el nombre a algo más explicativo, si coges el programa dentro de un año para modificarlo, que una variable se llame $var no te dice mucho ;-)
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: Depuración de errores

Mensaje por jamaro »

Pues con estas indicaciones ya he dejado el código limpito, limpito,... ya no me aparece ningún "warning" con Au3Check.

Ahora nos pondremos a utilizarlo, y ver si detectamos el error del primer mensaje que me indicaron. Seguramente fue porque tardó en descargar los datos de XML o no consiguió descargarlos.

De nuevo muchas gracias. Todos estos mensajes me han sido muy útiles para ordenar un poco más el código, conocer Au3Check y utilizar algunos criterios sobre la declaración de variables.


Saludos.
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Depuración de errores

Mensaje por BasicOs »

@jamaro, no hay de que, felicidades por el code, super bueno, y además no hay muchos scripts que gestionen datos. Si deseas publicarlo en los programas gordos en Galería y los que están allí participan en el "certificado de especialista en autoit", a nivel del foro o lo que quieras.
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Depuración de errores

Mensaje por Chefito »

Está bien el script :smt023 .

Ahora te tocará como estas haciendo organizarlo, limpiarlo, y por supuesto, tratamiento de errores (a este último paso te refieres ahora).

Para tratar el error del que hablas, seguro que se puede hacer de varias formas. Facilmente puedes poner un while.....sleep().....wend con alguna condición dentro para que salga de una forma u otra. Con esto haces una especie de contador para saber que si en tanto tiempo no ha recibido ningún dato, que mande un mensaje de aviso/error diciendolo, y que corte el script, o que vuelva a intentarlo o lo que quieras.

Si tienes errores gordos de objetos COM (objeto xmlhttp), tratalos con la función objevent. Busca en la ayuda objevent("AutoIt.Error, .
También podrás utilizar los eventos que posee el objeto gracias a la función anterior. Mira a ver si tiene alguno que te pueda ayudar (Mira por ejemplo en http://msdn.microsoft.com/en-us/library ... S.85).aspx).

También podrías hacer tratamiento de errores para otras eventualidades que pudiesen pasar, como por ejemplo detectar si tiene conexión a internet (a la página), y avisar al usuario si no la tiene.

Siguiendo todos estos consejos seguro que te sale un programa bastante correcto :smt023 .

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: Depuración de errores

Mensaje por jamaro »

BasicOS: Gracias por los comentarios. No me imaginaba que un programa sencillo podría gustaros. En cuanto a publicarlo en "los programas gordos en Galería", no sé a que te refieres. La verdad es que no tengo inconveniente si puede serle útil a otro usuario.

Chefito: Estoy trabajando en la limpieza y orden del código. Me ha gustado lo que comentas de comprobar la conexión a internet, y viendo los foros, esta es la opción que he probado y, de momento funciona. He probado a ejecutar el programa con conexión y también deshabilitando la conexión.

Esta es la parte del código que he modificado, en la Función leelibres y lo mismo en LeeDatosEstacion. He dejado dentro del caso de que devuelva

Código: Seleccionar todo

Func leelibres($num_estacion)
	Local $ping,$MsgBoxConexionInternet
	while 1
		$ping = Ping("www.valenbisi.es")
			If $ping > 0 then ; Si hay respuesta del PING
				ExitLoop
			Else			; Si no hay respuesta del PING
				$MsgBoxConexionInternet = MsgBox(53,"Error de Conexión a Internet","Para que el programa funcione es necesario tener conexión a internet." & @CRLF & @CRLF & "Pulse REINTENTAR cuando tenga la conexión a internet activada, o CANCELAR para salir del programa.")
				Select
					Case $MsgBoxConexionInternet = 4 ;Reintentar
							ContinueLoop	; Continúa intentándolo
					Case $MsgBoxConexionInternet = 2 ;Cancelar
							Exit	; Sale del programa
				EndSelect
			EndIf
	WEnd

	$oXML.Open("GET", "http://www.valenbisi.es/service/stationdetails/" & $num_estacion, 0)
	$oXML.Send
	$sFile = _TempFile(@TempDir, '~', '.xml')
	FileWrite($sFile, $oXML.responseText)

(------------ resto de código ------------)

No sé si es una manera adecuada de hacerlo. El tratamiento de errores que me comentas con ObjEvent creo que se me queda un poco grande (tendré que averiguar cómo funciona y cuándo se puede/debe utilizar).

Saludos.
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Depuración de errores

Mensaje por BasicOs »

@jamaro
Que son importantes todos los programa extensos de más de 300 lineas, y sobre todo los que trabajan con datos, y en tu caso adicionalmente con XML, porque son tecnologías que se usan en las empresas y en los usuarios, cualquier cosa que usas en internet es una base de datos desde facebook al messenger. :smt034
Puedes mirar esto de la GAlería que son programas con muchas características: http://www.emesn.com/autoitforum/viewto ... eria#p6565
Salu22:)
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Depuración de errores

Mensaje por Ximorro »

jamaro, ¿cuando dices que has descubierto au3Check es porque lo ejecutas manualmente?

Si es así, y teniendo en cuenta que estás editando ya programas con entidad, te recomiendo que uses el editor Scite, tiene muchas ventajas y a la hora de compilar ya le pasa automáticamente el au3Check y te dice por consola (una ventana del propio Scite) las incidencias que encuentra.
Tiene otras cosas muy útiles, como autocompletar código, integración con la ayuda de AutoIt, etc...

Lo que te están diciendo de Galería de programas es que cuando tengas el programa depurado a tu gusto si lo quieres publicar puedes hacerlo en dos subforos (en uno de los dos). El de los programas "normales" sería "esScripts - Programas - Abre tus creaciones maravillosas". Además hay otro subforo un poco más especial, "Galeria de Programas Originales Concurso", donde se publican programas grandes o al menos complejos en su concepción o técnicas de programación. Cada cierto tiempo (creo que este año tocaría hacer otro) se hace una especie de concurso, los administradores, moderadores y foreros profesionales evalúan los programas presentados a concurso y deciden si el autor ha llegado a ese nivel de "programador especialista". A parte de los programas presentados también se tiene en cuenta la aportación en general al foro, tanto presentando rutinas o programas pequeños para que todos aprendamos de ellos como participando activamente en la resolución de dudas de otros foreros (y mostrando calidad y conocimientos al hacerlo, claro)

Si se pasa el concurso al usuario se le condecora Especialista de Autoit: se le distingue con un color diferente en el foro, se le añade al grupo de "especialistas" (con acceso a un subforo privado), será evaluador en futuras ediciones del concurso, etc...

Puedes pasarte por allí y ver que cosas se han presentado en el pasado, lo normal sería no presentar sólo un programa, sino varios, pero para abrir boca el tuyo desde luego tiene entidad como programa completo que toca varios temas avanzados y como dice BasicOS con tecnologías muy de actualidad: web, xml, base de datos...

En esta entrada tienes las bases de la pasada edición, para que te hagas una idea.
http://www.emesn.com/autoitforum/viewto ... f=1&t=1838
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: Depuración de errores

Mensaje por jamaro »

Bueno pos muchas gracias por los comentarios hacia el programa. Lo ordenaré un poco y lo colgaré en esScripts - Programas por si puede resultarle útil el programa o el código a otros usuarios.

Ximorro: ¡No te asustes! Hasta ahora utilizaba Scite, pero, por alguna razón, no venía "integrado" en el menú Herramientas todas las utilidades que ahora sí tengo. Antes, apenas tenía Ejecutar, Compilar,... y sí daba algunos errores, pero los mostraba de otra manera y, además, no me salían tantos como cuando los ejecuto ahora (que ejecuta AutoIt3Wrapper v.2.0.1.24 y AU3Check (1.54.19.0)).

En cuanto al foro, desde hace un tiempo lo visito, en sus distintos apartados, y hay cosas estupendas, que dan ideas y, sobretodo, enseñan. En cuanto a bases de datos, me vino muy bien el TPV que se publicó, y algún programa de Averuche (ue también utiliza SQLite).

¡Saludos!
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Depuración de errores

Mensaje por Ximorro »

Eso de que el Scite parecía "a medias" puede ser porque al instalar AutoIT te instala una versión Lite del Scite, igual estabas trabajando con eso.
Para tener todas esas herramientas complementarias que dices (¡muy recomendables!) hay que hacer la instalación completa de Scite para AutoIt, que está en la misma página de descargas en la web de AutoIt.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Depuración de errores

Mensaje por BasicOs »

Ximorro escribió:Eso de que el Scite parecía "a medias" puede ser porque al instalar AutoIT te instala una versión Lite del Scite, igual estabas trabajando con eso.
Para tener todas esas herramientas complementarias que dices (¡muy recomendables!) hay que hacer la instalación completa de Scite para AutoIt, que está en la misma página de descargas en la web de AutoIt.
En la versión Autoit Portable ES no hay ese problema, a ver. :smt015
Salu22:)
Responder