domingo, 31 de mayo de 2009

Programa en xHarbour "no se ve" cuando se ejecuta

Pues eso....

Si estas usando la última versión de xHarbour (Abril 2009 de xharbour.org ó 1.21 de xharbour.org), he de informarte que "algo" hicieron estos amigos en el compilador, que ahora es necesario hacer una llamada a la terminal que deseas utilizar de manera manual desde tu código fuente:

Function Main
request hb_gt_win // hay que agregar esta línea
SetMode(25,80)
CLS
@ 0,0 SAY "Hola Mundo"
WAIT
RETURN Nil

Con este pequeño cambio tus programas xHarbour en modo consola se volverán a ejecutar como lo hacían normalmente.

Obviamente no debes olvidar linkar la GTWIN.LIB para que funcione correctamente.

Este "bug" (preferiría llamarlo "issue") se ha reportado ya en el foro de xHarbour, pero Ron Pinkas insiste en que este cambio no es necesario, y que basta con linkar la libería en el orden correcto, desafortunadamente no nos dice en que orden debe de linkarse las libs, solo indica que su producto "xHarbour Builder" hace el linkeo correctamente.

miércoles, 20 de mayo de 2009

Foro de soporte para xHarbour.

Los foros de xHarbour pueden ser leídos por medio de un lector de grupos de noticias (news reader) como Outlook Express o Mozilla Thunderbird.

Los foros secundarios están hospedados en el propio servidor de xHarbour.com y se puede acceder a ellos en la siguiente dirección:

news://news.xharbour.com

En este servidor están hospedados los foros de soporte a xHabour Builder, el del grupo de desarrolladores (foro privado), se ofrecen 2 foros en idiomas extranjeros, uno en italiano y otro en español / portugúes (no se quién les dijo a la gente de xHarbour que ambos lenguajes se parecen mucho) y también hay un foro de soporte para el código fuente el cual se obtiene por CVS (Control Version System).

El foro de soporte principal no está hospedado en los servidores de xHarbour.com, al igual que Clipper, Visual Objects y otros lenguajes de programación el foro de xHarbour está hospedado en los servidores principales de grupos de noticias de UseNet:

news://comp.lang.xharbour

El problema con este servidor es que no todos los proveedores de internet te dan acceso a los grupos de UseNet (son muchísimos y tienen demasiada información), por ello, si quieres usar un lector de noticas, te recomiendo que abras una cuenta en MOTZARELLA.ORG.

Motzarella te ofrece un servidor para lectura de grupos de noticias, este es un servidor privado, pero gratuito, lo único que te piden es crear una cuenta con ellos y te enviarán un password por correo electrónico para que puedas usar tu lector de noticias.

Si prefieres otro medio que no sea el lector de noticias, entonces puedes crearte una cuenta Google Groups y acceder al grupo comp.lang.xharbour para leer y publicar mensajes.

viernes, 15 de mayo de 2009

Generar PDFs con Xailer

Xailer incorpora nativamente la capacidad de generar todos sus informes en PDF, requiriendo sin embargo de una utilidad de terceros llamada Image2PDF.

Image2PDF es una DLL de la empresa Utility Warrior que a partir del motor de vista previa de Xailer exporta el reporte presentado a un archivo .PDF.

No hay que hacer nada en programación para generar el PDF, Xailer al detectar la existencia del DLL de Image2PDF instalado en el equipo, automática presentará en la barra de botones del motor de vista previa, un botón para realizar el proceso de exportación.

martes, 5 de mayo de 2009

¿ Existe un IDE para Xbase++ ?

De momento no.

Xbase++ tiene en marcha un proyecto para hacer un IDE llamado Visual xBase++.

Hasta donde tengo entendido, es un trabajo en desarrollo, no sido liberado ni tiene una versión funcional al 100% y solo hay versiones de evaluación para usuarios registrados del producto.

La herramienta tiene buena apariencia, pero parece que no la veremos hasta la versión 2.0 o 3.0 de Xbase++

Configuración de ADS para usar con Xailer.

No es necesaria ninguna configuración adicional para usar Advantage Database Server (ADS) con Xailer.

El cliente que usa Xailer para conectarse con ADS es el mismo cliente que utiliza (x)Harbour y todas sus interfaces gráficas, por lo mismo no es necesario hacer ninguna configuración en el servidor para usarlo con una aplicación Xailer.

Lo unico que tienes que hacer, como con cualquier programa (x)Harbour que vaya a utilizar ADS es linkear las libs RDDADS.LIB, ACE32.DLIB y tener las DLLs clientes de ADS en la misma carpeta donde tienes la aplicación: AXWCS32.DLL (cliente ADS), ACE32.DLL (Funciones de acceso al servidor) y opcionalmente ADSLOC32.DLL (cliente local de ADS).

La forma de uso con Xailer es idéntica a como se hace con cualquier programa xHarbour.

Usar lenguaje SQL sobre archivos DBF

Si es posible hacerlo, pero hay que hacer algunas anotaciones al respecto.

Microsoft provee de un componente ADO y uno ODBC para tablas DBF, sin embargo no es recomendable usar estos componentes ya que no actualizan los índices ni NTX ni CDX cuando haces alguna operación de mantenimiento de tablas. Se puede usar perfectamente para consultas pero no para mantenimiento.

Si existe una forma de usar SQL con tablas DBFs y que se actualicen los índices tanto NTX y CDX y es usando el servidor de Advantage DataBase Server, tanto en su versión local gratuita, o con el servidor remoto o el internet.

Toda la información sobre como hacer está disponible haciendo click aquí.

domingo, 3 de mayo de 2009

XEdit 2.0 y Clipper

¿ Se puede usar XEdit 2.0 para compilar un programa en CA-Clipper 16 bits ?

No, se puede usar el editor de código fuente y el gestor de proyectos, pero no la herramienta "make" ya que internamente está programada para ejecutar el "harbour.exe" y no el "clipper.exe".

Adicionalmente XEdit está programado para usar el compilador del "C" de Borland, paso que no es necesario con Clipper.

Y finalmente XEdit agrega las librerías nativas de (x)Harbour al momento del proceso de enlazado.

Usando CDX con xHarbour y Advantage al mismo tiempo

Advantage Database Server utiliza su propio mecanismo de bloqueo de tablas lo que garantiza la seguridad de los datos.

Mientras una aplicación cliente ADS está en uso de una tabla DBF con índices CDX o NTX solo otra aplicación cliente ADS puede hacer uso de la tabla esto para evitar posibles daños en los índices y mantener las ventajas de la tecnología Cliente / Servidor.

Sin embargo, el ACE32.DLL incluye una función para hacer compatible el mecanismo de bloqueo, usandola, una aplicación cliente ADS puede compartir los datos con un programa en Clipper o en xHarbour.

La función es AdsLocking(.f.) y su equivalente para aplicaciones ADS con CA-Clipper es AX_Locking(.F.)

Su uso no se recomienda ya que la compatiblidad con programas no clientes ADS pone en riesgo la integridad de los índices.

viernes, 1 de mayo de 2009

Sumar fechas con xHarbour

xHarbour ofrece la misma funcionalidad en manipulación de tipos de campo fecha que la que ofrecía Clipper en su momento, todas las operaciones son soportadas:

dNewDate := DATE() + 30 // suma 30 días a la fecha actual
nDias := CTOD("01/01/2009") - DATE() // devuelve el número de dias transcurridos desde el 1 de enero.


Adicionalmente xHarbour ofrece total soporte a campos tipo Date-time, para mas información haz click aquí

Clipper en VPN

¿ Se puede correr un programa Clipper sobre una VPN ?

¡ Claro que se puede !, pero es TREMENDAMENTE LENTO.

La razón es que los programas Clipper operan bajo "arquiectura distribuida" bajo este esquema los datos son copiados del servidor a la estación de trabajo, procesados en la estación de trabajo y devueltos al servidor cada vez que haces un COMMIT.

Si tienes un DBF de 10 megas por ejemplo, los 10 megas son copiados por la VPN hasta la estación de trabajo que abrió el archivo, los datos son procesados localmente y cuando haces algún cambio o un alta y aparece un COMMIT en el código los datos se vuelven a copiar de vuelta al servidor.

En experiencias propias hemos tenido que esperar un promedio de 20 minutos para abrir una tabla DBF de poco menos de 10 megas sobre una VPN y no solo con Clipper, la lentitud también ocurre en programas con (x)Harbour.

Sin embargo SI ES POSIBLE TENER UNA VELOCIDAD SIMILAR A LA DE UNA LAN con programa en Clipper y xHarbour, el truco consiste en utilizar una herramienta Cliente / Servidor, que puede ser un servidor de datos SQL o bien Advantage Database Server para archivos DBF.s

SQLite y FiveWin Harbour

Como comenté en algún post anterior SQLite es un estupendo producto para incluir un manejador de bases de datos SQL no cliente/servidor en nuestras aplicaciones.

SQLite es super ligero, todo el invento está metido en un solo archivo .LIB, es tan ligero que hasta lo puedes usar en un Pocket PC sin mucho consumo de memoria, como lo hace Basic4PPC.

Para incluirlo en tus aplicaciones simplemente tienes que linkear la LIB de SQLite a tu programa y ¡ listo !, el servidor y el cliente quedan integrados en tu archivo .EXE.

Como SQLite es una lib para lenguaje "C", para usarlo en (x)Harbour ya sea en modo consola o con FiveWin o MiniGUI es necesario hacer una serie de "wrappers" para compatibilizar la llamada a funciones en "C" desde (x)Harbour.

Hace aproximadamente un par de años mi buen amigo Rafa Carmona (The Full) se dió a la tarea de comenzar los wrappers para compatibilizar la lib de SQLite para Harbour, donando su trabajo como parte de su proyecto Open Source T-GTK. Una GUI multiplataforma para (x)Harbour que funciona en Windows y Linux.

Ignoro el grado de avance que logró, pero todo el código fuente junto con algunos PRGs para pruebas, así como los wrappers en "C" y un archivo MAKE para construir la librería están disponibles haciendo click aquí.

Por otro lado, Xailer puede acceder nativamente a SQLite en la versión Enterprise, ya que cuenta con un DataSource nativo que facilita enormemente la conexión con este servidor de base de datos.