Está en la página 1de 18

De Clipper a (x) Harbour con XEdit

Este artculo me lo han pedido muchsimos programadores de Clipper, y hasta ahora haba tenido tiempo de escribirlo con calma, de hecho me ha llevado poco mas de una semana. Lo que explicar a continuacin es la forma fcil y rpida de migrar tus programas CAClipper a (x)Harbour, con las menores molestias posibles, utilizando una herramienta muy interesante : XEDIT. XEdit es una herramienta hecha en Xailer, de hecho, XEdit es un buen ejemplo de lo que se puede lograr programando con Xailer, pero adems es un prototipo de lo que despus se convertira en el IDE de Xailer. El Equipo de Xailer ha decidido mejorarlo y dejarlo como un producto individual independiente de Xailer para ayudar a los programadores novatos en (x)Harbour en los procesos de compilacin y enlazado de sus aplicaciones, tanto para modo consola, como para Windows hechas con FiveWin, as es..... puedes usar XEdit para compilar y enlazar tus programas FiveWin. ;-) Si trabajas con XEdit para migrar tus programas de Clipper a (x)Harbour, posteriormente la migracin de tus programas a Windows con Xailer te ser mucho mas fcil, ya que XEdit comparte muchas de las caractersticas de su hermano mayor: El IDE de Xailer, como son: El Gestor de Proyectos, El Editor de cdigo fuente, El Depurador visual (solo para aplicaciones modo Consola, no para aplicaciones Windows, la depuracin para aplicaciones Windows solo est disponible en Xailer), El Explorador de DBFs (DBU) y El Editor de SQLite., estos componentes no los voy a explicar en este artculo, pero haz click sobre los enlaces anteriores y obtendrs una descripcin detallada de cada uno. Antes de comenzar debo aclarar que todo lo aqu expuesto est basado en XEdit 2.0, que el Equipo de Xailer me ha facilitado para su evaluacin, esta versin esta disponible como un BETA, ms adelante encontrars informacin sobre como obtenerlo. Bien comencemos. Los que ya llevamos una temporada trabajando con (x)Harobur sabemos que si bien el compilador es poderoso y verstil, no es nada fcil el proceso de compilacin y enlazado de los programas, sobre todo porque tenemos por medio un compilador de C, del cual poco o nada sabemos, y es en este punto es donde el proceso de compilacin y enlazado del EXE final se vuelve terrible. Recordemos como hacamos un programa EXE en Clipper: archivo.prg -> archivo.obj -> archivo.exe Escribimos nuestro cdigo fuente en archivos .PRG, luego con el compilador Clipper compilamos esos archivos .PRG y obtenemos archivos .OBJ, posteriormente tomamos esos archivos .OBJ, y por medio de un enlazador como RTLINK, BLINKER, EXOSPACE etc, unamos los archivos .OBJ con los archivos de libreras de Clipper

(clipper.lib, extend.lib, terminal.lib, dbfntx.lib) y el resultado del proceso de enlazado o "linkeado" era un archivo .EXE. En (x)Harbour las cosas son "un poquito" mas complejas: archivo.prg -> archivo.c ->archivo.obj -> archivo.exe En (x)Harbour tomas tu cdigo fuente en archivos .PRG (el mismo cdigo fuente que tienes en Clipper en este momento, los cambios que tienes que hacer son mnimos), en vez de utilizar el compilador Clipper compilamos con el compilador Harbour (los parmetros de compilacin exactamente los mismos que Clipper), pero el resultado de la compilacin NO SON ARCHIVOS .OBJ, SON ARCHIVOS ".C", efectivamente, Harbour "traduce" tu cdigo Clipper a cdigo en lenguaje "C", que no es en realidad un cdigo "C" estndar, vamos que si eres experto en "C" y editas el contenido de un archivo resultado de la compilacin con Harbour, el cdigo te parecer mas Ensamblador que "C", esto es porque el cdigo generado es un "PCODE", es decir, un cdigo que solo puede ser interpretado por un motor especial llamado "PMACHINE", la "PMACHINE" para interpretar este PCODE viene en las libreras de Harbour que tienes que enlazar en el archivo .OBJ para generar el archivo .EXE. Un momento.... entonces s deben de existir archivos .OBJ en alguna parte del proceso de compilacin, claro que existen !, los archivos .OBJ provienen de compilar el cdigo en "C" para ello necesitas un compilador de C, y aqu es donde empieza la fiesta porque actualmente (x)Harbour es compatible con varios compiladores de "C" como el Microsoft Visual C++ desde la versin 6 hasta la versin 8, el Pelles C, el MingW32 el Open Watcom, pero la versin mas popular es la desarrollada para Borland C++, ya que Borland ha liberado al dominio pblico sin restricciones de uso el compilador Borland C++ Ver. 5.5. Otra ventaja adicional, es que al generar (x)Harbour cdigo en "C", entonces puedes hacer programas con el lenguaje Clipper que ya conoces para otros sistemas operativos, como Linux, MacOS, OS/2 de IBM, MS-DOS de 32 bits (DR-DOS), eso s, no sern programas grficos con ventanas ni nada, sern programas MS-DOS (para modo consola). Para cada uno de estos sistemas operativos existen versiones de (x)Harbour disponibles, obviamente los compiladores de C para estas plataformas son distintos a los usados para aplicaciones Windows. Retomando el tema, el Compilador de "C" volver a compilar nuestros archivos generados con (x)Harbour, y ahora s, generar los archivos .OBJ, posteriormente esos archivos .OBJ hay que "linkearlos" junto con las libreras de (x)Harbour para generar el archivo .EXE final. Todos los compiladores de "C" incluyen su propio enlazador (linker), por lo que no requieres ningn otro producto adicional, as que te puedes olvidar de Blinker, Exospace, etc. El verdadero problema de generar un EXE con (x)Harbour viene en la parte de proceso de compilacin con "C", y es aqu donde XEdit entra en accin. As que lo que primero que necesitamos para migrar nuestras aplicaciones es conseguir xHarbour, aunque xEdit soporta compilacin con Harbour, se siente mas "cmodo" con xHarbour, por otro lado siendo el Borland C++ el compilador de C preferido por los

programadores, entonces necesitaremos obtener una versin de xHarbour para Borland C++. Te voy a ahorrar la molestia de ir a la pgina de xHarbour.org y buscar la versin del compilador para Borland, lo que necesitas est haciendo click aqu. No hay proceso de instalacin, simplemente descarga este archivo .ZIP y desempcalo en una carpeta que se llame de preferencia c:\xharbour (los ejemplos que se mostrarn mas adelante los he construido basndome en esta ubicacin). Luego vas a necesitar el compilador C++ de Borland, el uso de este compilador es gratuito, pero no es de libre distribucin, tienes que obtenerlo desde la pgina que Borland a travs de su filial CodeGear ha establecido para tal fin, previo registro, puedes acceder a la pgina para obtener el Borland C++ haciendo click aqu. El archivo que se descarga se llama FreeCommandLineTools.Exe simplemente ejectalo y realizar la instalacin del compilador en la carpeta c:\Borland. Puedes descargar una versin Beta para probar XEdit de: http://www.ciber-tec.d2g.com/xedit/ Debers rellenar el formulario que est en esta pgina por 2 motivos: el primero es para llevar un grupo de control de beta testers, por lo que nos ser de mucha utilidad que adems de los datos que te pedimos como obligatorios, rellenes todos los campos del formulario para poder ubicar el perfil de cada usuario, la segunda razn por la que te pedimos que te registres es para informarte de la disponibilidad de la versin final de XEdit cuando est lista. Solo como comentario, el programa que gestiona el registro y enva los correos electrnicos se escribi totalmente usando XEdit y est hecho con xHarbour, Advantage Database Server y Funcky, usando un componente especial para programacin para internet desarrollado por nosotros llamado WebAS (no se ran : Web Application System y si piensan que lo desarrollamos cuando no tenamos nada que hacer y estbamos aburridos, estn en lo cierto). Recibirs las instrucciones de descarga por e-mail, as que asegrate de dar una direccin de correo vlida. Descarga el archivo .ZIP de acuerdo a las instrucciones del correo que recibirs y desempcalo en una carpeta que se llame c:\xedit2. A continuacin te explicar los primeros pasos en el uso de XEdit, que debern ser suficientes para poder compilar cualquier aplicacin Clipper actual a 32 bits con xHarbour. Ejecuta el archivo XEDIT.EXE desde la carpeta donde lo haz instalado, y procederemos a configurar el comportamiento bsico de la herramienta: Selecciona: Men Principal / Herramientas / Opciones Generales Aparece una ventana como esta:

Selecciona del rbol; xHarbour (no Harbour) y debers indicar los directorios donde has instalado el compilador, indicando adems la ubicacin de las carpetas BIN, LIB e INCLUDE:

A continuacin selecciona del rbol BCC++ (Compilador de Borland C++) y haz lo mismo que con la configuracin de xHarbour, indica donde estn los distintos directorios del compilador de C:

Y listo, hemos terminado la primera etapa de la configuracin. Ahora tenemos que crear un entorno de programacin. Un entorno de programacin es una configuracin especial de carpetas adicionales y de opciones de los compiladores tanto de xHarbour como de Borland, necesarias de acuerdo a cada necesidad especfica, por ejemplo, para compilar una aplicacin en (x)Harbour para modo consola se necesitan ciertos parmetros de compilacin, mientras que para compilar una aplicacin para Windows hecha con FiveWin, se necesitan incluir algunos archivos, y definir la ubicacin de los archivos de cabecera. Para crear un entorno: Men Principal / Herramientas / Entorno de programacin. Aparece una ventana como esta:

Tenemos que darle un nombre a este entorno, as que en NOMBRE teclea por ejemplo "xharbour", vers que aparece un botn que tiene una hoja en blanco del lado derecho del campo donde haz puesto el nombre, haz click sobre el, y vers como ahora aparece una configuracin sugerida para xHarbour y Borland C++:

Da click en el boton ACEPTAR y listo, haz creado un entorno de programacin para crear programas con xHarbour para modo consola. Como XEdit tambin se puede utilizar para compilar programas para Windows hechos con FiveWin, entonces podemos crear otro entorno llamado FiveWin, y aadir la ubicacin de las carpetas donde se encuentran las libreras y archivos de cabecera de FW, este es un ejemplo de la configuracin de XEdit que yo utilizo para compilar un programa FiveWin:

Una vez que hemos creado nuestros entornos de programacin, hemos terminado con el proceso de configuracin, ahora lleg el momento de comenzar a migrar nuestros programas a 32 bits. Antes de comenzar, tenemos que entender como trabaja XEdit. XEdit trabaja en base a "proyectos", un proyecto no es mas que una carpeta del disco duro que a su vez tiene subcarpetas donde se guardan los distintos componentes de la aplicacin, por ejemplo el cdigo fuente va en una carpeta, los archivos de cabecera .ch en otra, se hace otra para los archivos de recursos .rc, y as sucesivamente. Para crear un proyecto nuevo: Men principal / Archivo / Nuevo Proyecto.... Puedes crear carpetas nuevas para tus proyectos desde la ventana donde se te pide que le des un nombre al proyecto, personalmente lo que yo hago es crear una carpeta llamada PROYECTOS debajo de la carpeta XEDIT2 y ah voy creando subcarpetas para guardar cada proyecto. Creemos pues la capeta "PRUEBA1" y pongamosle el mismo nombre a nuestro

proyecto:

La configuracin de cada proyecto se guarda en archivos XPJ (Xailer/Xedit ProJect) que no son mas que archivos .INI con informacin sobre el proyecto que estamos usando. Pulsamos el botn de ACEPTAR y aparece esta ventana, que configura las propiedades del proyecto:

Aqu indicaremos si queremos crear un EXE o una LIB, una descripcin del aplicativo

que estamos desarrollando, misma que se "pegar" al EXE final, deberemos indicar el nombre del archivo de salida, en este caso prueba1.exe y MUY IMPORTANTE debemos indicar el ENTORNO DE PROGRAMACION, previamente creado, que vayamos a utilizar para compilar este programa, en este caso "xharbour", tambin deberemos indicar el nombre del mdulo principal, pero de momento dejaremos en blanco este espacio, presionemos el botn ACEPTAR para guardar los cambios (puedes volver a esta ventana posteriormente desde Men Principal / Proyecto / Propiedades del proyecto). Al presionar el botn Aceptar XEdit te pondr el siguiente mensaje de aviso:

Indicndote que se van a crear subcarpetas para guardar los distintos componentes de tu aplicacin, simplemente haz click en el botn "SI". Ya estamos listos para hacer un pequeo experimento, vamos a crear un pequeo .PRG de ejemplo y a compilarlo usando xEdit. Seleccionaremos: Menu Principal / Archivo / Nuevo / PRG. Veremos en el editor de cdigo fuente que aparece una pestaa nueva con el nombre MODULE1.PRG, escribiremos lo siguiente y guardaremos este cdigo fuente :

Como vers es un programa Clipper puro y duro, con instrucciones bsicas de modo consola. Lleg el momento de compilar este programa, simplemente selecciona: Menu Principal / Proyecto / Compilar presiona Ctrl+F9. Los mensajes del compilador los vers en la parte inferior de la ventana del editor de cdigo:

Si la ltima lnea es 1 Files, X Warnings, 0 Errors .... Felicidades ! haz logrado compilar tu primer programa a 32 bits. Para ejecutarlo, haz doble click sobre l en el explorador de Windows y vers aparecer

una ventana de MS-DOS con esto:

Para compilar mas de un .PRG, tienes que hacer lo siguiente: Copia todos los .PRG que vayas a compilar a la carpeta SOURCE, y luego selecciona: Menu Principal / Proyecto / Aadir Fichero al proyecto Selecciona todos los .PRGs que necesites, realiza esta misma operacin si tienes archivos .CH que desees integrar en tu sistema. Si en alguno de tus programas utilizas una FUNCTION MAIN() entonces en las propiedades del proyecto (Menu principal / Proyecto / Propiedades del Proyecto) en la opcin de MODULO PRINCIPAL selecciona el PRG que tiene la funcin MAIN(), si no tienes funcin Main en algunos de tus programas, entonces selecciona el .PRG que arranca tu aplicacin. Para compilar todos los programas simplemente presiona Ctrl + F9. Si ests programando con FiveWin, entonces hay que cambiar algunas cosas y aadir

otras: Los .PRGs para un programa con FiveWin se agregan al proyecto de la misma manera que como se hace para un proyecto para xHarbour modo consola. Para integrar los recursos grficos (archivos .RC, .BMP, .ICO, CUR, etc.) al proyecto XEdit, procederemos la siguiente manera: Primero tenemos que crear un archivo de recursos vaco, esto se hace usando el Gestor de Recursos de XEdit, para activarlo selecciona: Menu principal / Ver / Gestor de recursos Y aparecer la siguiente pantalla:

Presiona el botn que tiene hoja en blanco, del lado izquierdo de la pantalla, ese botn sirve para crear un archivo de recursos .RC vaco, aparecer una ventana para dar nombre al archivo de recursos, esta pantalla te sugiere el nombre del .RC, en este caso ser el mismo nombre que el de tu proyecto, pero mi sugerencia es: dale el mismo nombre que el archivo .RC que utilizas en tu programa FiveWin, esta operacin crear un archivo RC vaco, pero quedar registrado el nombre del RC en las propiedades del proyecto para que al momento de compilar XEdit lo incluya en los archivos que deben ser enlazados para generar el EXE final.

DESPUES de crear el RC vaco, puedes copiar todos tus recursos a la carpeta RESOURCE de tu proyecto XEdit, y XEdit hace el resto, compilar y enlazar los recursos dentro de tu programa .EXE, es MUY IMPORTANTE que primero crees el .RC vaco, ya que si copias primero los recursos a la carpeta RESOURCE y luego creas el .RC con el Gestor de Recursos entonces TE VAS A CARGAR TU .RC, con todos los dilogos, cursores y bitmaps que tenga pegados adentro, as que el que avisa no es traidor, ests advertido. Aprovechando que estamos hablando del tema de los recursos, la siguiente informacin te puede ser til: sabas que puedes programar XEdit para "lanzar" cualquier aplicacin que quieras desde el men principal ?, esta caracterstica es sumamente til para enlazar por ejemplo tu editor de recursos como una opcin del men del Xedit, y no tener que ir navegando por todo el disco duro para encontrar el EXE adecuado, yo por ejemplo tengo configuradas las herramientas que ms uso la opcin HERRAMIENTAS del men principal:

Para agregar herramientas, que pueden ser no solo archivos .EXE sino tambin archivos de ayuda .CHM hacemos lo siguiente: Menu Principal / Herramientas / Configurar Herramientas Aparece la siguiente pantalla, presiona el boton AADIR y luego selecciona el archivo .EXE o .CHM que quieras aadir al men:

y listo !, haz agregado una herramienta a tu men, la cual se ejecutar de manera automtica cada vez que la selecciones del men. Ahora bien, si el compilador de recursos de Borland te est dando problemas con el tamao de los archivos .RC o con los bitmaps muy grandes o de muchos colores, tambin puedes cambiar el compilador de recursos para usar otro que d menos problemas, para saber como lee mi artculo: Cambiando el compilador de recursos, dentro de este mismo blog, si compilas tu programa FiveWin con XEdit, puedes usar los trucos ah mencionado, recuerda que XEdit es muy similar al IDE de Xailer. Retomando el tema de FiveWin con xEdit, otra cosa importante son las libreras adicionales que suelen llevar los programas FW, para empezar las 2 bsicas: FIVEHX.LIB y FIVEHC.LIB. Para la gestin de libreras (archivos .LIB) Xedit posee un gestor de libreras, para acceder a el: Men Principal / Proyecto / Propiedades del Proyecto y seleccionar del rbol:LIBRERIAS

Aparece una pantalla similar a esta:

Pulsando el botn AADIR, podrs agregar las libreras que quieras incluir en tu proyecto, por default XEdit te incluir que las de xHarbour y Borland C++, y tu podrs seleccionar las adicionales que necesites haciendo click en el checkbox, en este caso he aadido las 2 libreras de FiveWin. Tambin es posible definir el orden de linkeado, subiendo y bajando las libreras con los botones que tienen flechas. Este bonito proyecto en FiveWin, compilado con XEdit, se ve as:

Existen mas trucos y herramientas disponibles con XEdit, pero ahora te toca a t descubrirlas. El programador de Clipper que quiera migrar a xHarbour, encontrar en XEdit LA HERRAMIENTA que le facilitar el proceso de migracin, adems de que si en un futuro decide desarrollar aplicaciones para Windows usando Xailer, pues ya tendr un buen trecho andado, porque el IDE de Xailer y XEdit comparten muchas herramientas comunes. El programador de FiveWin tambin encontrar en XEdit un valioso aliado, conozco muchos programadores que todava compilan sus programas con archivo .BAT o .MAK desde una ventana de MS-DOS o todava utilizan el EDIT de MS-DOS o el NOTEPAD para escribir sus programas, con XEdit podrn automatizar mucho de ese trabajo, con el consabido ahorro de tiempo, tendrn un editor de cdigo profesional, as como otras herramientas interesantes todas integradas en un mismo lugar, adems de que podrn probar "un poquito" sobre como se desarrolla usando Xailer. Para poder ofrecer ayuda a los beta testers de XEdit y hacer un mejor seguimiento de la correccin de bugs y mejoras al producto, hemos establecido un foro de consulta de XEdit en nuestros foros de soporte.

Ya que el IDE de Xailer es muy similar al XEdit, he includo en el paquete de distribucin de XEdit el archivo XAILERES.CHM, que es el archivo que contiene la ayuda sobre el uso del IDE de Xailer, ah podrs aprender como usar la mayora de las herramientas de XEdit, como el gestor de proyectos, la configuracin, el editor de cdigo fuente, etc. Espero que con este tutorial muchos de ustedes se animen a darle las gracias al nuestro viejo y querido Clipper y que se adentren en el mundo de la programacin a 32 bits.