Para Clarion6 y C55, Legacy y ABC!
Ahora para Clarion 7! y
Net Talk Web Server!
Este template facilita y mejora notablemente
la depuración, la implementación y el soporte de aplicaciones Clarion for
Windows permitiendo encontrar fácilmente los puntos de conflicto con resultados
excelentes sin la necesidad de utilizar el complejo debuger o la arcaica, pobre
y peligrosa técnica del uso de las funciones MESSAGE() o SETCLIPBOARD().
Con el agregado
de muy poco código, Ud. puede cambiar radicalmente la forma en que depura y
realiza soporte de su software.
No le ha pasado que:
Agregó MESSAGE o SETCLIPBOARD a su app para tracear algun problema, o llevar al
analizador de consultas algun script y, una vez que soluciona el problema tener
que volver sobre sus pasos a borrarlos para recompilar? o, peor aún... se
olvida
de borrarlos y le manda la aplicación al usuario final llena de ventanas
incomprensibles?
Necesitar
tracear queries Sql enviados al Server sin tener algún profiler instalado en la
maquina en la que tiene acceso?
Un usuario
no puede pasar por una puerta de seguridad del sistema y no sabe porqué?
Lo llame un
usuario preguntándole porque no ve o esta disable determinado control de una
ventana ?
Tener
problemas para seguir el cálculo de una determinada variable y tener que hacerlo
sobre las bases de su usuario?
Todo lo
anterior y mucho mas se soluciona utilizando este template.
Simplificando, tiene una función muy parecida a colocar MESSAGES o SETCLIPBOARDS
en los procedimientos para intentar tracear algún problema.
La ventaja
es que no hay que volver atrás a borrarlos para compilar finalmente la
aplicación.
Con él Ud. puede:
Colocar código de traceo sin
necesidad de luego borrar y recompilar la aplicación.
Encontrar fácilmente errores en la lógica de programación siguiendo el flujo del
programa.
Depurar porciones de código de un reporte donde no se puede hacer usando MESSAGE()
o STOP().
Tracear queries Sql enviados al Server sin necesidad de tener algún profiler
instalado en la maquina en la que tiene acceso.
Definir tipos de traceo y otorgarles propiedades de funcionamiento y poder luego
filtrarlos.
Definirles un color particular y un indent para identificarlos en la pantalla.
Definir mandar al clipboard o no el mensaje.
Tracear automáticamente el texto de los mensajes presentados al usuario asi como
también con que botón contestó.
Esto le permitirá, en tiempo de ejecución:
Tracear la aplicación en producción en las máquinas de su usuario.
Verificar por qué razón un usuario no ve o esta
disable determinado control de una ventana.
Seguir el cálculo de una determinada variable.
Solucionar problemas cuando un usuario no puede pasar por una puerta de
seguridad del sistema y no sabe por qué.
Copiar al portapapeles un script Sql generado en runtime para poder llevarlo al
analizador de consultas para probarlo o mejorarlo o ver que es lo que esta
fallando en el.
Realizar un punto de “stop” para poder copiar al portapapeles el contenido del
mensaje traceado.
Hacer que su usuario active el traceo, realice la operación que no esta
funcionando como debiera y le envie el traceo por mail, pudiendo ver en él,
hasta los mensajes que se le presentaron (de error o de su sistema ) y con que
botón respondió a los mismos.
Ya no mas
tipear y luego borrar MESSAGES y SETCLIPBOARDS, desde ahora aprovecha ese tipeo
y queda para siempre en su código para poder analizarlo cuando sea necesario!
Ya no mas
preguntas de sus clientes sobre el comportamiento de procesos o ventanas teniendo
que reveer el código para ver que esta pasando!
Ventajas extra:
La ventana de traceo es SDI, puede arrastrarla fuera de la ventana
del sistema.
Solo activa la memorización y visualización del traceo cuando lo necesita.
Al cerrar la ventana de traceo, el funcionamiento del sistema vuelve a la
normalidad y los recursos utilizados por el traceo son liberados.
Demo:

Como Instalarlo:

El instalador detecta atomáticamente las versiones de Clarion instaladas e
instala en el directorio de la versión elegida, dentro de los siguientes
directorios: \3rdParty\Templates, Examples y Bin
El instalador puede registrar los templates por Ud. o Ud. puede registrar ARMi_TraceIt.tpl (ABC) o el
ARMi_TraceItCw.tpl (Legacy) en
manualmente.
Como utilizarlo:
Agregue el
Template al Global de las aplicaciones que desee tracear.
En el caso
de MultiDLL, hágalo primero con el data dll, luego solo en las app en las que
necesite utilizar el traceo y finalmente en el app exe, desde donde seguramente
llamará a la ventana de traceo.
En la
solapa General defina primero el idioma de la ventana de traceo, si necesita
otro idioma que Español/Ingles/Frances o Portugues puede traducir la ventana modificando el ARMi_TraceIt.ini y copiándolo al directorio de su
aplicación.
Defina los
tipos de mensajes de traceo a registrar, estos tipos permitirán definir la
forma en la que se ven en la ventana de traceo y los filtros de la misma.
Por ejemplo,
queremos tracear mensajes para saber cuando pasa por nuestra rutina de control
de acceso a procesos (Puertas) o de lectura de parámetros
de funcionamiento, a estos mensajes les asignaremos el tipo P
Además queremos poder tracear algunos queries SQL, de esos complejos que vienen
de ser armados con muchos filtros y opciones del usuario, entonces definimos
otro tipo de traceo con el codigo Q, a este le decimos además, que haga un
setclipboard automático.
Entonces
ingrese:
Descripción : Parametros y Puertas
Código : P
Color : color:red
Indent : 3
SetClipboard:
No
Descripción : Queries Sql
Código : Q
Color : color:green
Indent : 0
SetClipboard:
Si
La ventana
se ve como la que sigue:

De este
modo, si en su aplicación ingresa, por ejemplo, en los procesos de lectura de
parámetros o permisos:
Trace(‘Leyendo párametro’ & MiParametro
& ‘ : ‘ & ValorParametro , ‘P’)
O en los
lugares en donde necesite tracear el querie enviado al motor Sql ingresa:
Trace( ‘Leo cantidad de productos con : ‘ &
MiQuery , ‘Q’ )
logrará loguear los
mensajes en tiempo real, esto se producirá solo si tiene activa la ventana de
traceo, ventana que es SDI para que pueda desplazarse afuera de la ventana de la
aplicación y mejorar la visualizaicón.
Para activar la ventana de traceo,
normalmente desde una opción de Menú, o alertando alguna tecla en el Frame o lo
que se le ocurra, tipee:
START(wTrace)
Esto
activará la ventana de traceo y la memorización de mensajes, viéndose como
sigue:

Esta ventana puede
traducirse automáticamente al Ingles, Español, Frances o Portugues
automáticamente o al idioma que necesite a traves del archivo ini:
ARMi_Traceit.ini
Mientras se
está logeando, si el tipo de mensaje tiene chequeado el SetClipboard, se
mandará el mensaje al clipboard y aparecerá un mensaje como el que sigue indicándolo.

En este
momento y antes de cerrar esta ventana ud. deberia hacer uso del portapapeles ya
que es probable que se modifique mientras el programa continúa y porque el
mensaje logueado que se verá en la pantalla, si es mayor de 255 caracteres se
repartirá en varios renglones haciendo mas difícil su futura recuperación.
Copiar al Clipboard: De todas
maneras la ventana permite con el botón copiar al portapapeles, copiar lo que
estamos viendo para rearmar un query o para que por ejemplo nuestro usuario que
no tiene acceso por conexión remota nos pueda enviar la info generada por el
trace para analizarla y darle alguna solución.
Mensajes borradores: Si envia mensajes a
tracear omitiendo el tipo como:
Trace('Este es un
mensaje borrador')
se tomarán como
mensajes borradores, normalmente son mensajes de urgencia en los que para tipear
menos, solo ponemos el valor de una variable y entonces finalmente y cuando
hasta nos olvidamos que los pusimos, ensucian la ventana de traceo, asi que la
misma tiene un check para omitir la visualización de estos mensajes borrador.
Búsquedas: En esta ventana
además se puede setear si memorizar o no Fecha/Hora en cada renglón y se puede
buscar por coincidencia tipo INSTRING en forma secuencial desde el primer
registro logeado y siguiendo con el botón >>> viendo las siguientes
coincidencias.
Identificando ingreso y salida de procedimientos: Se ve en la
ventana de logueos anterior mensajes como los que siguen:
>>>
Init Proc: Factur , App: Factur
<<<
Kill Proc: uClientes, App t_pcom
Estos mensajes son de entrada y salida de las ventanas del
sistema indicando el nombre del Proc, el App, fecha, descripción y prototipo, donde se encuentra en el Init
Embed y el Kill Embed de la misma.
Para utilizarlo solo debe tildar el
check Trace all proc/app names at Init Kill de este template.
Menu
option trace: Esto se agrega automáticamente a
los frames con menú y se obtienen traceos como el que sigue:
---> Menu: Invoices
Copiar a Archivo:
Puede definir también el path y nombre
del archivo ASCII a utilizar p
Message
Box Trace:
The trace window has its own message box, then
it can trace the text messages and the button
ara copiar, defina el nombre como un string, con
comillas simples o como una variable.
Traceo de Mensajes y su respuesta:
Al activar la ventana de Traceo la misma hace un Hook a un proceso porpio de
mensajes permitiendo tracear el texto de todos los mensajes mostrados al usuario
y el texto del bot{on con el que contesta al mismo.
Tipos
Especiales: TraceIt usa algunos tipos
especiales para poder tracear los mensajes automáticos que ofrece, todos
comienzan con #, estos son:
#P
: Init, Kill, Menu options, Texto y respuestas de MessageBox (estos mensajes
responden al check Ocultar especiales.
#MH : Message Halt, este tipo permite, paarte de loguear el mensaje,
presentar un messagebox con la posibilidad de Halt el app, muy util cuando
estamos en un loop que no sabemos porque no brekea.
Code Template:
Agregamos aparte un sencillo Code Template para el logueo de
mensajes

El check Setclipboar sobreescribe lo
que pudiera estar programado en el tipo de mensage utilizado.
Además incluimos el témplate:
Enable Procedure
Identification Window
El cual permite en tiempo real y sin necesidad del template
TraceIt conocer también el Proc y App de donde proviene la ventana que estamos
viendo.

Nettalk web server,
ideas para el traceo:
En la ventana del procedimiento principal (Webserver)
agregue un botòn y en el embed del mismo tipee
START(wTrace)
Para tracear los
GetSessionValues agregue en le procedimiento
WebHandler
En el embed p_web.GetSessionValue PROCEDURE(string p_Name), despues del parent
call agregue:
if p_name<>'' then Trace('GSV: '&p_Name&'='&ReturnValue,'GSV') end
Para tracear los SetSessionValues
agregue en le procedimiento WebHandler
En el embed p_web.SetSessionValue PROCEDURE(string p_Name,STRING p_Value), antes
del parent call agregue:
if p_name<>'' then Trace('SSV: '&p_Name&'='&p_Value,'SSV') end
Para verificar los filtros de los browses agregue luego de SetFilter
Trace(loc:filterwas)
Futuras mejoras:
Tracear en un archivo TXT en lugar de en un queue de memoria.
Tracear en archivos TPS o SQL pudiendo definir asignaciones de campos.
Tracear en modo silecioso, sin que se vea la ventana.
Historia:
Marzo 2008: Primera versión alfa del template, solo ABC.
Abril 2008: Agregado de versión Legacy
Mayo 2008: Agregado de filtro, color e indent
Junio 2008: Versión 6.02 Beta
Julio 2008: ADD Setclipboard set and override on Control
Template
Julio 2008: CHANGE Ventana de traceo SDI
Julio 2008: ADD Esconder mensajes borrador
Julio 2008: ADD Copiar mensajes de traceo a un archivo ASCII
Julio 2008: ADD Traceo de Mensajes al usuario y botón con el
que contesta
Enero 2009: Net Talk web Server compatible
Abril 2009: Clarion 7 Compatible