Co-creadores de Xailer. Especialistas en software de gestión para la PYME.

xaScript

xaScript de OZ Software es una potente herramienta de scripting que abre completamente nuevas posibilidades a los desarrolladores de xHarbour. xaScript le permite crear código fuente Harbour desde sus propios programas que luego podrá ser evaluado en tiempo de ejecución sin necesidad de utilizar para nada el propio compilador de Harbour o un enlazador. 

Esta nueva herramienta lleva las posibilidad de la clásica 'Macro' al máximo nivel. Con xaScript puede crear aplicaciones que cambien completamente su interface en tiempo de ejecución, o que se ajusten a las preferencias individuales de cada uno de sus clientes sin necesidad de tener una versión individual de su aplicación para cada uno de ellos. 
 
xaScript es una pequeña librería que puede ser enlazada con su aplicación para ofrecerle toda la potencia del scripting. 
 
Son tan sólo tres pasos los necesarios para ejecutar cualquier script, que son: 
  1. oScript := TScript():New( cTexto )  
  2. oScript:Compile()  
  3. oScript:Run()  
¡¡ Eso es todo ll! 
 
Un archivo script puede contener más de una función, incluso puede añadir a un script todos los archivos de código fuente que desee. Absolutamente todas las funciones incluidas en todos los archivos, al igual que cualquier otra función existente en su aplicación, son accesibles desde el scripting. 
 
xaScript detecta todos los errrores de sintaxis en el proceso de compilación, pero no se ejecuta ningún código durante ese proceso. 
 
Antes de llamar al método Run() deberá comprobar de que no se ha producido ningún error de compilación. Para dicho motivo el objeto TScript posee la propiedad cError que guarda el último error encontrado, y también existe un método MsgError que le muestra en pantalla el error en el clásico diálogo MsgInfo. 
 
Puede pasar hasta 10 parametros a cualquier función, por ejemplo: 
 
 xRet := oScript:Compile( "Test", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ) 
 
Esta expresión ejecutará la función 'Test' con diez parametros numéricos y la variable xRet retendrá el valor retornado por la función. 
 
Al igual que en el proceso de compilación, si durante la ejecución se produjese algún problema, la propiedad oScript:cError retornará información sobre el error. 
 
Puede crear variables globales (Public) de la misma forma que lo hace en Harbour pero con la instrucción STATIC al principio del módulo a compilar: 
 
STATIC a := 1  
FUNCTION ....  
  ...  
  ...  
RETURN ...  
  
Este tipo de variables son accesibles desde cualquier función dentro del script. También puede crear variables de ámbito local con las instrucciones LOCAL o STATIC pero ya dentro de la declaración de la función. Las variables estáticas retienen su valor entre diferentes llamadas. 
 
FUNCTION Test()  
  Static cText := "hello", cFile := "reamdme.txt"  
  Local xVar := 1  
  ..........  
  ..........  
RETURN .T.  
 
Puede incluir igualmente cualquier comentario en su script, de la misma manera que lo hace en xHarbour con "//". 
 
Todos los operadores aritméticos y booleanos de Harbour son soportados. 
 
Las siguientes instrucciones son soportadas y pueden ser anidadas a cualquier nivel: 
  • IF, ELSEIF, ELSE, ENDIF  
  • DO CASE, CASE, OTHERWISE, ENDCASE  
  • DO WHILE, END WHILE  
  • FOR, NEXT  
  • LOOP, EXIT  
  • RETURN  
  • WITH Ob jeto, END WITH  
  • FOR EACH, NEXT  
  • TRY, CATCH, END  
Puede ejecutar cualquier función de Harbour desde su archivo Script siempre que dicha función este enlazada con su aplicación. Si usted recibe el mensaje de error: 'Function not found', lo único que tiene que hacer es utilizar la instrucción REQUEST para forzar que la función se adjunte al ejecutable. Por ejemplo: 
 
REQUEST Descend, Alltrim  
 
Esto hará acccesible las funciones Descend y Alltrim en su archivo script incluso aunque no se usen en ninguna parte de su aplicación. 
 
Para acceder a cualquier variable de su aplicación deberá crear una variable pública que guarde su valor. 
 
Requerimientos:
xaScript tan sólo funciona con Harbour. El software de acompañamiento de xaScript esta realizado con Xailer, sin embargo no es necesario en absoluto Xailer para utilizar xaScript 
 
Limitaciones:
La funcionalidad de xaScript está basada en el soporte de 'macros' que incluye el propio Harbour, por lo que hereda todos sus ventajas y limitaciones. xaScript no es un sustituto de Harbour ni debe userse de esa forma, tan sólo lleva el soporte de macros de Harbour a su máximo nivel. 
 
El ánimo de xaScript es soportar en su totalidad todas las características del lenguaje CA-Clipper. Algunas de las extensiones del lenguaje introducidas por Harbour son soportadas, pero no todas en su totalidad. 
 
Las actuales limitaciones conocidas de xaScript son: 
  • Recursividad en funciones de scripting no está soportado  
  • Directiva BEGIN SEQUENCE no soportada  
  • Creación de clases limitada. Herencia desde otras clases de scripting no soportada  
  • Cláusula FINALLY en bloques TRY-CATCH no soportado  
  • Comando SWITCH no soportado, deberá usar DO CASE en su vez  
Enlazado:

Simplemente incluya la librería xascript.lib en su fichero de enlazado.

¡Eso es todo!