Página 1 de 1

Depuración de errores con Au3Check

Publicado: 21 Oct 2010, 19:31
por Jonny
Hola

Estoy ejecutando un programa que estoy haciendo, con Scite. Al ejecutarlo, me da algunos errores el Au3Check, que ejecutándolo normal no obtengo.
D:\programa\Callbacks.au3(39,37) : WARNING: $HHook: possibly used before declara
Return _WinAPI_CallNextHookEx($HHook,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
D:\programa\Config.au3(42,30) : WARNING: $ConfigFileStart: possibly used before
If FileClose($ConfigFileStart)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
D:\programa\Config.au3(79,24) : WARNING: $ConfigHeader: possibly used before dec
$BuffConf=$ConfigHeader&
~~~~~~~~~~~~~~~~~~~~~~~^
D:\programa\Config.au3(79,34) : WARNING: $BuffConf possibly not declared/created
$BuffConf=$ConfigHeader&$BuffFile
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
D:\programa\Interface.au3(23,73) : WARNING: $WS_CAPTION: possibly used before de
$WinHand=GuiCreate($FileName, $WinWidth, $WinHeight, -1, -1, $WS_CAPTION,
No entiendo que querrán decir...

El primero, creí que significaría que estoy llamando a la función _WinAPI_CallNextHookEx() antes de declararla (realmente estaba así el código) pero cambiándolo, para que _WinAPI_CallNextHookEx() salga en el código antes del retorno de la función que lo requiere, también aparece ese error.

¿Alguien sabe que significan esos errores?...

Al ejecutarlo sin Scite, AutoIt no da ningún error.

Salu2!

Re: Depuración de errores con Au3Check

Publicado: 21 Oct 2010, 20:02
por Alastor
La funcion no tiene nada que ver, te dice en el primer error que es posible que hayas utilizado la variable $HHook antes de declararla. Simplemente declarala antes de usarla (como Local en la función o como Global al inicio)

Re: Depuración de errores con Au3Check

Publicado: 21 Oct 2010, 20:43
por Jonny
Hola

¡Muchas gracias!

Era eso, ya he reorganizado los includes, para que no den esos problemas y ahora ya funciona perfecto.

¡me está gustando eso de comprobar los errores/warnings con el Au3Check!.

¿Como puedo hacerlo sin el Scite? (pasar el código por el Au3Check sin Scite).

P.D: Veo con el Au3Check, que algunas UDF que tengo del foro inglés dan errores y warnings ... jejeje.
Chorradas, como:

Código: Seleccionar todo

$Variable = "hola"
(los espacios antes y después del signo igual)...

Acias,

Salu2!

Re: Depuración de errores con Au3Check

Publicado: 22 Oct 2010, 08:42
por Ximorro
Como muy bien dice Alastor es muy recomendable declarar las variables con Local o Global (lo que corresponda), pero la verdad es que AutoIt no obliga a declarar variables, así que lo que realmente le está impidiendo compilar es que cuando se ha encontrado con esa variable es que aún no tiene ningún valor, con lo que no puede usarla.
Si no está declarada sólo puede usarse para asignarle un valor, así que si las declaras sin más quizás arregles los errores sintácticos, pero mira que no haya también errores lógicos. (Al declararlas tendrán valor cero, cadena vacía, etc., con lo que ya tienen un valor y no da errores sintácticos, pero quizás no sea el valor que quieres que tengan...)

Yo seguiría con Scite, por comodidad. Puedes hacerlo sin él desde una ventana de DOS, pues au3check es una utilidad que se maneja pasándole los parámetros por la línea de comandos.
Puedes verlos ejecutando simplemente el au3check sin parámetros, y te dirá cómo se usa, bien fácil: :smt020

Código: Seleccionar todo

Usage: Au3Check [-q] [-d] [-u file] [-w[-] n].. [-v[-] n].. [-I dir].. file.au3
            -q        : quiet (only error/warn output)
            -d        : as Opt("MustDeclareVars", 1)
            -I dir    : additional directories for searching include files
            -w 1      : already included file (on)
            -w 2      : missing #comments-end (on)
            -w 3      : already declared var (off)
            -w 4      : local var used in global scope (off)
            -w 5      : local var declared but not used (off)
            -w 6      : warn when using Dim (off)
            -v 1      : show include paths/files (off)
            -v 2      : show lexer tokens (off)
            -v 3      : show unreferenced UDFs and global variables (off)
       Exit codes:
             0        : success - no errors or warnings
             1        : warning(s) only
             2        : syntax error(s)
             3        : usage or input error
Mucho mejor con Scite, donde desde el entorno puede cambiar las opciones si es necesario, mira que al compilar (CTRL-F7) entre las varias pestañas configurables está la de Au3Check.

¡¿¡¿Los espacios antes y después del signo igual?!?! Eso no tiene que dar ningún error, ahí hay un problema raro ¿podrías poner un código de ejemplo que lo produzca?

Hay udf que pueden dar problemas porque se hicieron con versiones de AutoIt más antiguas (lógicamente no debe pasar con las oficiales que vienen con la instalación, pero es fácil que ocurra con las que bajamos de los foros). En esos casos a veces conviene actualizarlas para que compilen bien.

Re: Depuración de errores con Au3Check

Publicado: 22 Oct 2010, 12:17
por Jonny
Baahhhh, ¡Me has convencido! jeje, sigo con Scite...

Pues eso mismo me pareció a mi ("raro"), que por haber espacios antes y después de un igual diera error. La UDF (no oficial) donde se quejaba el Au3Check era una que descargué hace ya tiempo llamada SysInfo.au3, Aunque, en el código pone "CompInfo.au3".
En cualquier caso, es para detectar el software y hardware del equipo.

Por ejemplo, en la línea 620 de esta UDF pone:
Dim $aPrintJobInfo[1][23], $i = 1
a lo que el Au3Check, al ejecutar el programa con la UDF cargada con #Include daba un error de sintaxis.
Ahora, tras haber arreglado los errores del código que he hecho yo, ya no se queja con los espacios alrededor del signo igual...

Salu2!

Re: Depuración de errores con Au3Check

Publicado: 25 Oct 2010, 08:19
por Ximorro
No sé cómo has estado tanto tiempo sin usar Scite, ya verás como tiene un montón de ventajas. :smt004

Esa línea que pones no tiene error de por sí, el error estaría antes y, o afectaba a esa línea o era tan enrevesado que AutoIt no se aclaraba para dar el lugar exacto del error y saltaba más adelante...
Pero bueno, si lo has arreglado corrigiendo tu código es que efectivamente el error no estaba ahí.