jueves, mayo 25, 2017

De Clipper a (x) Harbour con XEdit

Este artículo me lo han pedido muchísimos programadores de Clipper, y hasta ahora había tenido tiempo de escribirlo con calma, de hecho me ha llevado poco mas de una semana.

Lo que explicaré a continuación es la forma fácil y rápida de migrar tus programas CA-Clipper 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 además es un prototipo de lo que después se convertiría 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 compilación 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 migración de tus programas a Windows con Xailer te será mucho mas fácil, ya que XEdit comparte muchas de las características de su hermano mayor: El IDE de Xailer, como son: El Gestor de Proyectos, El Editor de código fuente, El Depurador visual (solo para aplicaciones modo Consola, no para aplicaciones Windows, la depuración 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 artículo, pero haz click sobre los enlaces anteriores y obtendrás una descripción detallada de cada uno.

Antes de comenzar debo aclarar que todo lo aquí expuesto está basado en XEdit 5.0.4 de Noviembre 2017, más adelante encontrarás información sobre como obtenerlo.

Bien comencemos.

Los que ya llevamos una temporada trabajando con (x)Harbour sabemos que si bien el compilador es poderoso y versátil, no es nada fácil el proceso de compilación 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 compilación y enlazado del EXE final se vuelve terrible.

Recordemos como hacíamos un programa EXE en Clipper:

archivo.prg -> archivo.obj -> archivo.exe

Escribimos nuestro código 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, uníamos los archivos .OBJ con los archivos de librerías 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 código fuente en archivos .PRG (el mismo código fuente que tienes en Clipper en este momento, los cambios que tienes que hacer son mínimos), en vez de utilizar el compilador Clipper compilamos con el compilador Harbour (los parámetros de compilación exactamente los mismos que Clipper), pero el resultado de la compilación NO SON ARCHIVOS .OBJ, SON ARCHIVOS ".C", efectivamente, Harbour "traduce" tu código Clipper a código en lenguaje "C", que no es en realidad un código "C" estándar, vamos que si eres experto en "C" y editas el contenido de un archivo resultado de la compilación con Harbour, el código te parecerá mas Ensamblador que "C", esto es porque el código generado es un "PCODE", es decir, un código que solo puede ser interpretado por un motor especial llamado "PMACHINE", la "PMACHINE" para interpretar este PCODE viene en las librerías 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 compilación, ¡ claro que existen !, los archivos .OBJ provienen de compilar el código 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 versión 6 hasta la versión 8, el Pelles C, el MingW32 ó el Open Watcom, pero la versión mas popular es la desarrollada para Borland C++, ya que Borland ha liberado al dominio público sin restricciones de uso el compilador Borland C++ Ver. 5.5.

Otra ventaja adicional, es que al generar (x)Harbour código 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 serán programas gráficos con ventanas ni nada (Windows forms), serán 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 librerías de (x)Harbour para generar el archivo .EXE final. Todos los compiladores de "C" incluyen su propio enlazador (linker), por lo que no requieres ningún 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 compilación con "C", y es aquí donde XEdit entra en acción.

Así que lo que primero que necesitamos para migrar nuestras aplicaciones es conseguir xHarbour, aunque xEdit soporta compilación con Harbour, también lo puede usar con xHarbour, por otro lado siendo el Borland C++ el compilador de C preferido por los programadores, entonces necesitaremos obtener una versión de xHarbour para Borland C++. Puedes ir directamente a la pagina de  xHarbour.org para descargar la versión para Borland C++.

No hay proceso de instalación, simplemente descarga este archivo .ZIP y desempácalo en una carpeta que se llame de preferencia c:\xharbour (los ejemplos que se mostrarán mas adelante los he construido basándome en esta ubicación).

Luego vas a necesitar el compilador C++ de Borland (ahora Embarcadero Technologies), el uso de este compilador es gratuito, pero no es de libre distribución, tienes que obtenerlo desde la página que Embarcadero ha establecido para tal fin, previo registro. Puedes acceder a la página para obtener el Borland C++ haciendo click aquí.

El archivo que se descarga se llama FreeCommandLineTools.Exe simplemente ejecútalo y realizará la instalación del compilador en la carpeta c:\Borland.

Finalmente debes descargar la ultima version de XEdit de:


Descarga XEdit desde la web de Xailer


Xedit viene con un programa de instalación con lo cual solo tendrás que ejecutarlo e instalarlo en tu disco duro, no hay nada mas que hacer.

A continuación te explicaré los primeros pasos en el uso de XEdit, que deberán ser suficientes para poder compilar cualquier aplicación 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 básico de la herramienta:

Selecciona:

Menú Principal / Herramientas / Opciones Generales

Aparece una ventana como esta:


Esta pantalla solo contiene configuraciones básicas que no te afectarán para tu programa, excepto la opcion que dice "Xailer". No es necesario que tengas Xailer instalado, configura los directorios a donde se encuentre XEdit, si es que el sistema no lo ha hecho por default.


Para poder compilar un programa, necesitamos crear un entorno de programación. Un entorno de programación es una configuración especial donde le indicaremos a XEdit las carpetas adicionales y las opciones de los compiladores tanto de xHarbour como de Borland, necesarias de acuerdo a cada necesidad específica, por ejemplo, para compilar una aplicación en (x)Harbour para modo consola se necesitan ciertos parámetros de compilación, mientras que para compilar una aplicación para Windows hecha con FiveWin, se necesitan incluir algunas librerías y definir la ubicación de los archivos de cabecera.

Para crear un entorno:

Menú Principal / Herramientas / Entorno de programación.

Puedes tener tantos entornos de programación como necesites, por ejemplo para xHarbour en modo consola, para FiveWin, para Harbour MiniGUI, etc.

Para agregar un nuevo entorno de programación haz click en el botón con el signo "+" que se encuentra en la parte inferior de la plantalla de configuración de entornos:



Lo que sigue es simple, solo tienes que darle un nombre a tu entorno y si lo requieres puedes copiar otro entorno similar para que no tengas que volver a dar todos los datos:



Una vez que haz dado nombre a tu entorno, procederemos a configurarlo con las opciones que muestran los folders de la pantalla de configuración de entorno de programación:

General:

Sirve para indicar las rutas a los archivos INCLUDE y LIB así como los archivos LIB adicionales que necesita tu aplicación.

En el caso de una aplicacion (x)Harbour para modo consola simple y llana, no sera necesario llenar ningun dato de esta pestaña, si tu aplicación es con Harbour MiniGUI o FiveWin, aquí deberás indicar la ruta a donde se encuentran los archivos de cabecera (include) y la ruta a la ubicación de las librerías adicionales que necesite tu aplicación.

Por ultimo para esta pestaña, deberás indicar EL NOMBRE DE LOS ARCHIVOS .LIB que utilice tu programa, EN EL FORMATO DEL COMPILADOR DE C QUE VAYAS A USAR. En el caso del Borland C++ simplemente se indican los nombres de los archivos anteponiendo un signo de "+" y separandolos por comas.

Este es un ejemplo de la configuración para FiveWin:

 
Compilador xBase:

En esta pestaña configuraremos el compilador de (x)Harbour que deseamos utilizar.

Oficialmente existen 3 versiones actualmente de (x)Harbour, el xHarbour como tal, que como recordarás es un "fork" del proyecto Harbour original, del cual no han hecho muchos cambios ultimamente y 2 versiones de Harbour, la 2.x  la 3.x, ¿ Cual es la diferencia ?.

En su momento un grupo de programadores por diferencia de opinión con otros programadores del proyecto Harbour original, decidieron crear su propia versión de Harbour, con miras a crear un producto comercial al que llamaron xHarbour (eXtended Harbour), e incluyeron en el muchas monerias que no encontrarás en Harbour como las estructuras SWITCH, el manejo de archivos XMLs, los "hashes", etc.

Luego vino la gente de Harbour y dijo.... nos estamos quedando atrás y evolucionarion el compilador a la versión 3 incluyendo muchas cosas de lo que xHarbour tenía, optimizando ademas los nucleos y haciendolo mucho mas rapido que xHarbour, además de tener versión de 64 bits, cosa que xHarbour no tiene.

Regresando a nuestro tema, en esta pestaña tendrás que configurar el compilador de (x)Harbour que desees utilizar:


En la parte superior, en los radio botones puedes seleccionar la versión de (x)Harbour que desees usar, y automaticamente en la parte inferior se añadirán las librerias necesarias dependiendo de la versión que vayas a utilizar. Lo unico que tienes que configurar es la ruta donde está tu compilador de (x)Harbour.

TIP: Hay muchas versiones de Harbour, muchas versiones de Xailer o de FiveWin, y en muchas ocasiones hay determinadas versiones del compilador que funcionan con tal o cual versión de otros productos, un consejo práctico: coloca la versión de Harbour compatible con tu herramienta en el mismo directorio donde tienes tu herramienta principal, esto te ahorrará muchos dolores de cabeza en el futuro.


Compilador de C:

(x)Harbour puede usarse con distintos compiladores de C, los mas populares: El Borland C++ porque fue con el que empezó todo y MinGW porque es un compilador de C totalmente open source, le sigue el Pelles C porque es gratuito y compatible con el Microsoft C++.

Quiero hacer aquí un paréntesis para mencionar que aunque no utilices el compilador de C de Pelles C, es conveniente descargarlo porque te ofrece 2 herramientas que si programas en FiveWin o MiniGUI te serán de gran utilidad:

El editor de recursos, que si estas acostumbrado a usar el Borland Resource Workshop y que no funciona en sistemas operativos de 64 bits, lo puede sustituir perfectamente a 32 bits y 64 bits.

El compilador de recursos PORC que además de ser muy rapido, opitimiza perfectamente el ejecutable final.

Puedes descargar el Pelles C haciendo click aqui

Dependiendo del compilador de C que vayas a utilizar las opciones se cargan automaticamente, solo tienes que establecer la ruta donde se encuentra tu compilador, en este ejemplo he seleccionado el compilador C++ de Borland:


Quedan 2 pestañas por analizar que no utilizaremos en esta primera aproximación a XEdit:

Compilador de recursos: Se utiliza en caso de que quieras usar otro compilador que no sea el del C++ nativo que vayas a usar, por ejemplo el PORC de Pelles C.

Enlazador: Similar a lo anterior, si no quieres usar el enlazador (linker) de tu compilador de C++ puedes usar esta pestaña para configurar otro distinto.

Una vez que hemos creado nuestros entornos de programación, hemos terminado con el proceso de configuración, 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 aplicación, por ejemplo el código 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 configuración de cada proyecto se guarda en archivos XPJ (Xailer/Xedit ProJect) que no son mas que archivos .XML con información sobre el proyecto que estamos usando.

Pulsamos el botón de ACEPTAR y aparece esta ventana, que configura las propiedades del proyecto:


Aquí indicaremos si queremos crear un EXE, una LIB o una aplicación WEB (de momento no disponible), una descripción 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 "FW xHB", también deberemos indicar el nombre del módulo principal, pero de momento dejaremos en blanco este espacio, presionemos el botón ACEPTAR para guardar los cambios (puedes volver a esta ventana posteriormente desde Menú Principal / Proyecto / Propiedades del proyecto).

Al presionar el botón Aceptar XEdit te pondrá el siguiente mensaje de aviso:



Indicándote que se van a crear subcarpetas para guardar los distintos componentes de tu aplicación, simplemente haz click en el botón "SI".

Ya estamos listos para hacer un pequeño experimento, vamos a crear un pequeño .PRG de ejemplo y a compilarlo usando xEdit.

Seleccionaremos:

Menu Principal / Archivo / Nuevo / PRG.

Veremos en el editor de código fuente que aparece una pestaña nueva con el nombre MODULE1.PRG, escribiremos lo siguiente y guardaremos este código fuente :



Como verás es un programa Clipper puro y duro, con instrucciones básicas de modo consola.

Llegó el momento de compilar este programa, simplemente selecciona:

Menu Principal / Proyecto / Compilar
ó presiona Ctrl+F9.

Los mensajes del compilador los verás en la parte inferior de la ventana del editor de código:



Si la última línea 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 verás 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 / Añadir Fichero al proyecto

Selecciona todos los .PRGs que necesites, realiza esta misma operación si tienes archivos .CH que desees integrar en tu sistema, estos los deberás colocar en la carpeta INCLUDE de tu proyecto.

Si en alguno de tus programas utilizas una FUNCTION MAIN() entonces en las propiedades del proyecto (Menu principal / Proyecto / Propiedades del Proyecto) en la opción de MODULO PRINCIPAL selecciona el PRG que tiene la función MAIN(), si no tienes función Main en algunos de tus programas, entonces selecciona el .PRG que arranca tu aplicación.

Para compilar todos los programas simplemente presiona Ctrl + F9.

Si estás programando con FiveWin, entonces hay que cambiar algunas cosas y añadir 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 gráficos (archivos .RC, .BMP, .ICO, CUR, etc.) al proyecto XEdit, procederemos la siguiente manera:

Primero tenemos que crear un archivo de recursos vacío, 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 botón que tiene hoja en blanco, del lado izquierdo de la pantalla, ese botón sirve para crear un archivo de recursos .RC vacío, 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 operación creará un archivo RC vacío, 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 vacío, 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 vacío, 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 diálogos, cursores y bitmaps que tenga pegados adentro, así que el que avisa no es traidor, estás advertido.

Aprovechando que estamos hablando del tema de los recursos, la siguiente información te puede ser útil: ¿ sabías que puedes programar XEdit para "lanzar" cualquier aplicación que quieras desde el menú principal ?, esta característica es sumamente útil para enlazar por ejemplo tu editor de recursos como una opción 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 más uso la opción HERRAMIENTAS del menú principal:


Para agregar herramientas, que pueden ser no solo archivos .EXE sino también archivos de ayuda .CHM hacemos lo siguiente:

Menu Principal / Herramientas / Configurar Herramientas

Aparece la siguiente pantalla, presiona el boton AÑADIR y luego selecciona el archivo .EXE o .CHM que quieras añadir al menú:



¡ y listo !, haz agregado una herramienta a tu menú, la cual se ejecutará de manera automática cada vez que la selecciones del menú.

Ahora bien, si el compilador de recursos de Borland te está dando problemas con el tamaño de los archivos .RC o con los bitmaps muy grandes o de muchos colores, también puedes cambiar el compilador de recursos para usar otro que dé menos problemas, para saber como lee mi artículo: 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 librerías adicionales que suelen llevar los programas FW, para empezar las 2 básicas: FIVEHX.LIB y FIVEHC.LIB.

Para la gestión de librerías (archivos .LIB) Xedit posee un gestor de librerías, para acceder a el:

Menú Principal / Proyecto / Propiedades del Proyecto y seleccionar del árbol:LIBRERIAS


Aparece una pantalla similar a esta:


Pulsando el botón AÑADIR, podrás agregar las librerías que quieras incluir en tu proyecto, por default XEdit te incluirá que las de xHarbour y Borland C++, y tu podrás seleccionar las adicionales que necesites haciendo click en el checkbox, en este caso he añadido las 2 librerías de FiveWin. También es posible definir el orden de linkeado, subiendo y bajando las librerías con los botones que tienen flechas.


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 migración, además 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 también encontrará en XEdit un valioso aliado, conozco muchos programadores que todavía compilan sus programas con archivo .BAT o .MAK desde una ventana de MS-DOS o todavía utilizan el EDIT de MS-DOS o el NOTEPAD para escribir sus programas, con XEdit podrán automatizar mucho de ese trabajo, con el consabido ahorro de tiempo, tendrán un editor de código profesional, así como otras herramientas interesantes todas integradas en un mismo lugar, además de que podrán probar "un poquito" sobre como se desarrolla usando Xailer.

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 programación a 32 bits.

56 comentarios:

Anónimo dijo...

Aunque ya había recibido alguna versión previa, esperaba este lanzamiento desde la última reunión del grupo Olivares en Madrid. Mi enhorabuena para la gente de Xailer, la verdad es que es una forma de aproximación al producto realmente excelente.
Tu tutorial es magnífico, es exactamente lo que se necesita para salir "pedaleando" en 30 minutos. Muchas gracias. Te has hecho acreedor a una birra cuando vengas a visitarnos por Madrid ;)

Un abrazo,

Anónimo dijo...

Hola,
excelente tu introducción a xharbour. Seguí tus instrucciones pero al compilar da error:
Fatal: unable to open file "HPZIP.LIB",
y ahí queda.
busqué esa librería pero no logré encontrarla.
entonces?
Max

Rene Flores dijo...

Max:

Esa libreria (HBZIP) solo es necesaria si vas a manejar archivos .ZIP, si tu programa no hace ZIPS, entonces eliminala desmarcandola desde la opcion LIBRERIAS en Proyecto / Propieades .....

Anónimo dijo...

Hola Rene, Soy Roberto Olaciregui de Argentina, te cuento que encontre un bug (eso creo...) en la version que baje de tu pagina, cuando creamos un nuevo proyecto, luego le agregamos un prg en blanco, si queremos borrarlo (boton derecho, eliminar del proyecto) el xedit pincha. Chequealo plis.
Saludos.
Roberto

Anónimo dijo...

Hola Rene,

Me alegra volver a contactar contigo, despues de tu "perdida" en el foro de FWH.

Vengo utilizando xEdit (version 1.16), como editor y creador de proyectos, desde hace tiempo, pero compilando despues con Verce. Muchas gracias por esa idea, de poder compilar con FWH.
He solicitado la participación en el foro, pero no me llega la autorización.
Un saludo

Manuel

Anónimo dijo...

Rene,
Sigo sin poder acceder al foro. Desconozco si habrá mas compañeros en mi misma situación.
He compilado varias aplicaciones grandes sin ningun problema. Te comento 2 cuestiones:
1) Sería conveniente, al definir las propiedades del proyecto, donde indica "Fichero de salida", se indicara "Directorio y Fichero de salida".
2) Cuando se crea una librería, a diferencia de cuando se crea una aplicación, no permite añadir nuevas librerias.

Un saludo,

Manuel

Anónimo dijo...

Hola Rene,
quise bajar el xEdit de la liga que tiene en su post pero por alguna razon no es posible, consegui la version 1.6 en el sitio de xailer pero esta no tiene la opcion para configurar los entornos de programacion de esas ventanas en adelante me pierdo.
si es posible que me mande la version del ejemplo al correo sistemas@topipan.com o a mi correo personal enodalp@hotmail.com se lo agradecere.

Saludos.

Rene Flores dijo...

Esteban:

Estoy en este momento de viaje por españa, y como ando de Hotel en hotel es un poco complicado conectarme todos los dias para mirar el correo.

Hoy comí con un amigo (Gabriel Pascual) que me comentó que algunos usuarios le comentaron en un foro de Clipper que tenían problemas con la descarga de XEdit.

Después de comer me prestó su conexión de internet en su oficina y teniamso el servidor caído, ya lo hemos vuelto a poner en marcha y ya puedes descargar el XEdit desde el enlace.

Esta semana tengo una reunión con el Equipo Xailer, para comentar los bugs del XEdit y tener una nueva version funcional muy pronto.

Rene Flores dijo...

Manuel:

Te comento que estoy en España, y esta misma semana que tengo un poco mas de tiempo revisaré como esta el tema de la configuracion del foro.

Anónimo dijo...

Rene:

Disculpe mi insistencia, pero sigo recibiendo el mismo mensaje "Oooops, error en el envio de correo" pero mi direccion es la correcta, ademas detalla el mensaje "nuestro sistema automatizado reporta el siguiente error : la operacion se acompletado exitosamente. pero no recibo nada. habra alguna forma de poder obtener el xEdit2.

Gracias y saludos.

Anónimo dijo...

Buenas tardes. Le comento que estoy tratando de pasar un viejo programa hecho en clipper 5.2 a Harbour usando BRMAKE. Ya he logrado generar el ejecutable luego de eliminar las llamadas a ciertas librerías como nanfour y el programa corre mucho más rápido que con clipper. Tengo algunos problemas: 1) al digitar las fechas el programa no respeta los "/" 2) el uso de "&" resulta confuso. Si fuera posible entablar comunicación vía e-mail se lo agradecería mucho. cavr_arroba_adinet_com_uy. Cordiales saludos, Carlos

jhm dijo...

Despues de muchos, pero muchos, intentos me sale el siguiente error, y ya me canse de inistir:

OOOPS! Error en el envio de correo

Creo que voy a pasar, esta vez, y eligire el camino largo pero parece mas seguro. Sin Xedit2

Hasta la vista!!

Pablinux dijo...

Hola, me pasa lo mismo que a Esteban, el servidor se ha debido de caer otra vez

Saludos

Pablo Herranz

Rene Flores dijo...

Todos los problemas con el servidor han sido solucionados.

Esteban: la descarga desde objeto persistente requiere forzosamente registro de datos.

Unknown dijo...

Buenos días, tampoco puedo descargar el xedit (oops su cuenta de correo tiene problemas) es el error que me aparece, intenté con varias cuentas de correo con IE y Mozilla pero sin obtener resultados favorables.

Charly Vega dijo...

Hola,
Instale todo talcual se describe en la nota y tengo los siguientes errores:
Compilando Module1.prg...
Module1.prg(13) Warning W0001 Ambiguous reference: 'GETLIST'
Module1.prg(13) Warning W0002 Ambiguous reference, assuming memvar: 'GETLIST'
Module1.prg(14) Warning W0001 Ambiguous reference: 'GETLIST'
Module1.prg(14) Warning W0001 Ambiguous reference: 'GETLIST'
Enlazando prueba1.exe...
Fatal: Unable to open file 'HBZIP.LIB'
1 Files, 4 Warnings, 1 Errors

o sea que le falta esa libreria.

Saludos

Carlos

Charly Vega dijo...

Holaene,
Trate de inscribirme a los foros de soporte por xEdit, pero aun llegandome el e-mail para activar la cuenta y despues de activarla, no me permite ingresar. Trato de crear nuevamente la cuenta y me dice que el usuario ya esta registrado (soy yo), pero no me reconoce ni contraseña ni usuario. He pedido que me envie la contraseña, me la ha enviado, pero sigue todo igual. No puedo ingresar a los foros.

Saludos desde Buenos Aires,
Carlos

Jou dijo...

Hola, Cada vez qie inicio actividad con xEdit, en Herramientas\Opciones Generales\xHarbour, no aparecen los Paths correspondientes y debo volver a ingresarlos.
Saludos
JouSoft

Rene Flores dijo...

Es un bug conocido y reportado de xEdit lo puedes solucionar de 2 formas:

1) Elimina todos los "entornos" que tengas creados, entra a configuracion y especifica la ubicacion de tu compilador xHarbour. Cierra xEdit, vuelve a entrar y crea un "entorno" nuevo

2) Si lo anterior falla, haz lo siguiente, en la carpeta de xEdit, ubica un archivo llamado XEDIT.CFG, es un archivo de texto, abrelo y locliza una seccion llamad [xharbour], si no existe la seccion creala y pon ahi tus rutas:

[xharbour]
Default=.F.
Root=c:\xHarbour
Bin=c:\xHarbour\bin
Include=c:\xHarbour\include
Lib=c:\xHarbour\lib

Guarda el archivo y XEDIT funcionará perfecto.

Anónimo dijo...

Hola Rene,

Tengo un problema nuevo, resulta que ya migre varios sistemas completos a xHarbour con xEdit, todo muy bien por cierto. hice prueba y error, varias veces, hasta que quedó mi ejecutable, pero hoy que hice una correccion a uno de esos sistemas ya migrados me marca un error que antes no aparecia. despues de modificar cualquier linea y dar Ctrl+F9 me dice que tengo una funcion redefinida (error F0002) esto, pienso yo que es porque la funcion se llama igual que el prg que la contiene, el detalle es que ya habia compilado y ligado el sistema completo con esa condicion en todos los prg y no hubo problema hasta hoy, ¿se habra movido algun flag o un parametro en el xEdit? si se puede corregir que bueno, si no, no me queda otra que renombrar todos los prg del proyecto. ademas cuando renombro el prg y por fin lo compila marca que no puede ejecutar el comando ilink32.exe

Gracias de antemano.
Saludos.

Anónimo dijo...

De nuevo lo Saludo Sr. Flores.
Para contestarme yo solo al post anterior, y por si alguien alguna vez se llega a encontrar en la misma situacion, resulta que por un descuido quité de las propiedades del proyecto el entorno xHarbour y lo habia dejado vacio, con eso se solucionó el problema descrito anteriormente, solo indiqué en las propiedades del proyecto que se utilizara el entorno correcto y listo, todo a la normalidad.

Gracias de nuevo.

Anónimo dijo...

Buenos dias me marca que la cuenta de correo no es válida
terecasta@hotmail.com

gracias

Anónimo dijo...

Hola.

Estoy pensando en actualizarme en cuanto al uso de herramientas de programacion y estoy haciendo pruebas con xedit y pelles c, pero estoy atorado con el uso de ambas herramientas, o sea no puedo usar el compilador de recursos de pelles c con xedit. Ya indique en opciones generales que mi compilador de recursos sea: C:\Archivos de Programa\PellesC\Bin\porc.exe. Pero al compilar xedit me manda el mensaje de que no encuentra el archivo .res

Si compilo mis recursos desde ms-dos con el siguiente comando C:\archiv~1\PellesC\Bin\PORC.EXE c:\fwh\sistemas\admiagua\resource\admiagua.rc /I c:\archiv~1\pellesc\include /I c:\archiv~1\pellesc\include\win, se compila sin ningun error.

Tanto el xedit como el pelles c me parecen excelentes herramientas y me gustaria usarlas de ahora en adelante

La prueba la hice con: FWH, XHarbour, BC5, xedit, pelles c.


Gracias.

Anónimo dijo...

a hora que lo lei, lo entendi, seme hace que mientras me dabas el curso lo escribias, saludos

Jorge Canul Ramos (Merida,Yuc)

Anónimo dijo...

Yo no se como habéis logrado migrar tan ricamente de clipper a Harbour con la excelente herramienta que promocionan en esta página, el Xedit. Llevo 16 días tratando de bajarmelo y a pesar de que más de uno se ha quejado de que es imposible (y eso fue hace meses) no hay manera. Vd, el moderador y encargado de que mi comentario vea o no la luz, ha escrito en su blog que hizo una comprobación desde el ordenador de un amigo durante un viaje por España. Alucinante. ¿Vd. imparte cursos de herramientas y es capaz de poner en un servidor un programa al que invita a probar y que es inaccesible?

Anónimo dijo...

Buenas.

Me gustaria saber si hay en Xharbour alguna funcion que sustituya a vgapalette de ct53.lib

Es para cambiar la paleta de colores de clipper.

Gracias

Eduardo Martin
España

Anónimo dijo...

Hola:
¿ Cómo puedo hacer para actualizar mi XEdit 2.0 Abril 2008 por la versión Setiembre 2008 ?

¿ La que se ofrece en www.Xailer.com es totalmente compatible con la versión de Abril-2008 ?

¿ Con ella puedo sobreescribir el XEdit 2.0 Abril-2008 ?

Desde ya muchas gracias por la ayuda que me puedan suministrar.

Saludos
JouSoft

Anónimo dijo...

hola

al bajar el xedit me sale

OOOPS! Error en el envio de correo

nelsonrapo@hotmail.com

Anónimo dijo...

Me quejaba de no poder bajarme el Xedit a pesar de haberlo intentado muchas veces e inclusive dudé de que mi comentario viera la luz ya que no era nada amable. Me equivoqué, no solo mi comentario está visible si no que tambien fui capaza de bajarme el xedit y probarlo. Espectacular! Es lo que cualquier programador hubiera soñado, lo tiene todo, despues de probarlo ya no hay forma de utilices otros, sería como ir para atrás. Sólo una curiosidad: después de ejecutar un programa compilado con xHarbour, los archivos .DBF ya no son accesibles desde dBase III.

FNGICD dijo...

Hola a todos

He probado mi primera compilación en xharbour sobre un programa en clipper y me da un error F0002redefinition of procedure or function.

En clipper no me salia y no veo que este redefinida la funcion.

¿me puede ayudar alguien?

Gracias mil

Anónimo dijo...

La solución a tu problema esta descrita mas arriba en los comentarios anteriores.
Saludos!

Anónimo dijo...

Estimados amigos, tengo una version de FW muy antigua ( 2.10 ), quiero pensar que no puedo pasar mis programas a 32 bit y mucho menos a 64, como puedo conseguir una versdion actualizada.
Gracias por su ayuda.

Mario Rodriguez dijo...

Rene, me parece estupenda esta herramienta, la instalé siguiendo las indicaciones y en tres patadas ya esta compilando mis aplicaciones de Fivewin, solo tengo un pequeño "bug", en la presentación preliminar de mis aplicaciones (usando el prev32.dll)no me aparecen los iconos de la parte superior (Donde esta la impresora, los botones de avance de página, la puerta roja para salir, etc), estaba compilando con AJMake y si podía ver estos iconos, pero ahora no ¿Habré hecho algo mal?. Gracias por tu respuesta.

Rene Flores dijo...

Mario:

Incluiste los recursos del PREV32.DLL en tu archivo RC ?

Si es así, agregaste el archivo RC al proyecto XEdit ?

Mario Rodriguez dijo...

Rene, gracias por tu respuesta, para ser honesto no se a que recursos del "PREV32.DLL" te refieres (compilando con AJMAKE no tuve que definirlos) y si, el archivo de recursos .RC esta agregado a mi proyecto, ya que puedo ver todos los dialogos sin problemas. Si fueras tan amable de decirme cuales son estos recursos los agregaré. Nuevamente gracias por el apoyo.

Diego dijo...

Hice el ajemplo de prueba pero al compilar me sale esto:

Compilando Prueba.prg...
solo con los warnings
Enlazando Prueba.exe...
Error: Unresolved external '_HB_FUN___DBGENTRY' referenced from C:\XHARBOUR\PRUEBA.DBJ
1 Files, 4 Warnings, 1 Errors

Que será?

Anónimo dijo...

Hice el Ejercicio de Prueba y al compilar me da los mismos resultados pero al ejecutar no me sale la ventana donde me pide los datos al presionar ctr+alt+del el programa esta ejecutandose en memoria que problema tengo me podrian ayudar

Anónimo dijo...

BUENOS DIAS MI NOMBRE ES WILMER JOSE LEON ESTOY TRATANDO DE LLENAR EL FORMULARIO PERO ME DICE QUE MI CORREO NO EXISTE, POR FAVOR ENVIENME TODO DE Xedit a mi cuenta de correo es willeon40@hotmail.com MUCHISIMAS GRACIAS.

Anónimo dijo...

Hola, mi nombre es Juan Pedro, hice el ejemplo propuesto pero al ejecutar prueba1.exe no hace nada, sin embargo en administrador de tareas el proceso aparece activo.
¿hice algo mal?

Muchas gracias a todos por compartir vuestros esfuerzos.

Anónimo dijo...

soy Juan Pedro de nuevo, actualicé xharbour desde el boton "conseguir xharbour" que sale en opciones generales de Xedit y todo arreglado.

Gracias y un saludo

Anónimo dijo...

Hola estoy migrando una aplicacion de clipper 5.1 a xharbour instale todos los programas para poder compilar el prg al momento de hacero me marca este error en los procedimientos que tengo definidos en el prg....

Cannot open REPORTE.prg, assumed external

reporte es un proc dentro del programa de clipper

espero puedas orientarme

www.eCaja.com.mx dijo...

Hola Sr. Rene Flores,

La infoamcion de sus blogs es para mi 100% profesional al los temas xBase y xHarbour, lo felicito en verdad. Pues bien, he conseguido sin dificultades migrar mis aplicaciones clipper de 16 bits a 32 bits con xHarbour usando xEdit lo caul agradezco a su persona. Sim embargo, me atrevo a consultarlo ya que no habia notado hasta el momento que en mis aplicaciones migradas la tecla de funcion F1 es ignorada.En mis programas utilizo de F1 a F10 con distintos procedimientos que aplico con el SET KEY TO o en el viejo dbEdit case lastkey() = 28

Ejemplo:
set key 28 to AYUDAS // F1 AYUDA EN LINEA
set key -1 to CALCUL // F2 CALCULADOR
set key -2 to CALENDAR // F3 CALENDARIO
set key -3 to CLOCK // F4 RELOJ-INFO
set key -8 to CAMUSR // F9 CAMBIO DE USUARIO

No hay errores en la compilacion pues los sistemas ejecutan al 100 salvo este detalle.

Sucede algo con el F1 EN [x]Harbour?

Saludos!

Rene Flores dijo...

Los programas xHarbour de 32 bits son programas Windows en realidad sin interfaz grafica.

Todos los programas Windows tienen predefinida la tecla F1 para llamar espcificamente a la ayuda de Windows y no se puede modificar este comportamiento.

ecaja.com.mx dijo...

Hola Sr. Rene Flores

Que sucede cuando tras haber compilado un proyecto incluso con cero errores y haber obtenido el archivo ejecutable, este ultimo se ejecuta por fracciones de segundo y termina sin decir cual es el problema? Es como si solo se prendiera y apagara la pantalla de consola. Recuerdo que con clipper en alguna ocacion me paso igual y aunque lo resolvi moviendo de lugar archivos prg en el file de compilacion, nunca supe cual fue la verdadera razon. Recurro a ud por su experiencia y notoria habilidad en el conocimiento de los lenguajes xBase y sus compiladores. De antemano agradezco su amable respuesta.

Juan Hernandez.

jHernandez dijo...

Hola Sr. Rene Flores,

Trabajando con xEdit utilizando un dbEdit me encuentro que se comporta extra#o cuando se detecta "tabla vacia" no es posible ejecutar codigo en esta seccion. y se resuelve de forma poco elegante retornando al dbedit con return(3) para que permita la posibilidad de agregar nuevos registros. Pongo mi ejemplo:

FUNCTION CATBAR
parameters mode,pos
private campo_act,salva,vop
campo_act = campo[pos]


DO CASE
case mode = 0 // Estado de inactividad
return(1)
case mode = 1 // Se intenta sobrepasar el bof()
tone(300,1)
return(1)
case mode = 2 // Se intenta sobrepasar el eof()
tone(300,1)
return(1)
case mode = 3 // Archivo Vac¡o
tone(300,2) // <-- Asi funciona pero ...
return(3)

* el siguiente codigo es ignorado:

* save screen to party
* ERROR(22,' Archivo de Inventario Vac¡o ... ','s')
* if substr(g_vecusr,29,1) = 'S'
* NVOBAR()
* KEY3D(17,27,19,30)
* return(0)
* else
* noin()
* KEY3D(17,27,19,30)
* return(1)
* endif

case lastkey() = 27 // Salida
return(0)
case lastkey() = 13 // Enter Consulta/Modif
CANAL(17,50,19,54)
if substr(g_vecusr,27,1) = 'S'
CANAL(17,50,19,54)
setcolor(smenu)
VERBAR()
KEY3D(17,50,19,54)
setcolor(smenu)
return(2)
else
noin()
KEY3D(17,50,19,54)
setcolor(smenu)
return(1)
endif

* case lastkey() = 28 // F1 AYUDA
* CANAL(17,15,19,18)
* e_AYUDAS('Directorio de Art¡culos')
* Error(16,'Ayuda no disponible...','')
* KEY3D(17,15,19,18)
* return(1)
case lastkey() = -4 // F5 Reg. Nuevo
CANAL(17,27,19,30)
if substr(g_vecusr,29,1) = 'S'
NVOBAR()
KEY3D(17,27,19,30)
return(2)
else
noin()
KEY3D(17,27,19,30)
return(1)
endif
case lastkey() = -5 // F6 Borra
CANAL(17,38,19,41)
if substr(g_vecusr,30,1) = 'S'
DELBAR()
KEY3D(17,38,19,41)
return(2)
else
noin()
KEY3D(17,38,19,41)
return(1)
endif
case lastkey() = -9 // F10 Buscar/Ordenar
CANAL(17,65,19,69)
if substr(g_vecusr,31,1) = 'S'
BARBUS()
KEY3D(17,65,19,69)
return(2)
else
KEY3D(17,65,19,69)
return(1)
endif
otherwise
return(1)
ENDCASE

RETURN nil

Mario Rodriguez dijo...

Rene, desde hace varios meses he estado usando esta fabulosa herramienta, pero ayer me empezo a hacer un efecto muy curioso, al hacer cambios a alguno de mis PRG's y compilar anteriormente solo compilaba el PRG que se había modificado, desde ayer al pulsar F9 para que compile y ejecute mi aplicación empieza a compilar todos los PRG's, independientemente de que hayan tenido cambios o no, la pregunta es ¿Que tengo que configurar para que solo compile el PRG en el que se hicieron cambios?. Muchas gracias por tu valiosa ayuda

Julio Martinez dijo...

Hola Rene soy Julio de Rosario Argentina y estoy probando la migración de Clipper a xHarbour, me pareció muy interesante tu nota sin embargo tengo que comentarte que me he topado con un problema que no logra dar en el clavo, hice paso por paso según lo explicado en esta nota pero al ejecutar el exe la ventana se cuelga(solo haber una ventana de comando y queda un cursor titilando sin respuesta a teclado) después de hacer algunas pruebas como cambiar los flag de BCC (-tWM a -tWC y otros) sigo sin poder corregir esta situación, si tienes referencia de dicho problema te agradecería me lo comentes.

Henry Salazar dijo...

Henry Salazar, Costa Rica. Excelente, por igual te ganaste una birra en las soleadas playas de Costa Rica. Finalmente creo que tenemos una herramienta que nos permitirá migrar todos esos cientos de miles de líneas que tenemos en Clipper.

Anónimo dijo...

Hola Rene Flores
Estoy tratando de migrar aplicacion de reportes de fw/clipper5.2. 32 bits estoy utilizando xedit 2.0 ,con Xharbour compiler build 0.99.61 (simplex) y fivewin xharbour 2.7.y rdd.lib 04/04/2006, el momento de realizar una apertura de archivo dbf/cdx no me abre el indice y cuando realizo un dbssek se que colgado la aplicacion.

Anónimo dijo...

Hola Rene, al igual que otros comentarios sin respuesta, mi problema seguro que te resulta muy sencillo. He seguido todos los pasos, he creado el programa de ejemplo. Lo he compilado tal y como explicas, pero cuando lo ejecuto el programa aparece en los procesos del Administrador de tareas de mi WinXP SP3, pero no se abre ninguna pantalla. Qué me falta?
Gracias y un saludo
Jorge

Proyecto Bíblico Genesis dijo...

Hola Rene Muy buen trabajo este de xedit.
estoy tratando de usarlo y tengo este problema.
Enlazando nomina.exe...
Error: Unresolved external '_HB_FUN_DBFCDX' referenced from C:\XEDIT1\OBJ\MODULE1.OBJ
0 Files, 0 Warnings, 1 Errors
Me podrias ayudar a resolverlo?

Gracias Rene

Anónimo dijo...

Hola Rene, he pasado un programa de Foxpro 2.0 a xharbour+xedit y con unas pequeñas modificaciones funciona correctamente, solamente tengo que solucionar un pequeño problemita que es :
Como puedo desactivar o interceptar la X de la ventana principal para que el usuario de la aplicacion no salga de la misma en cualquier momento y deje por ejemplo ficheros abiertos ,procesos a medio finalizar etc...

Un saludo y grqacias por tu atencion Angel.

Rodolfo Granados dijo...

Hola maestro, mi nombre es Rodolfo Granados, quisiera saber como compilar un solo programa a la vez de todos los que estan en mi proyecto, esto para poder ir haciendo las correcciones necesarias
De antemano muchas gracias

Mauricio Hernández M. dijo...

En este sitio está la respuesta para aquellos que compilan sin errores y al ejecutar no se ve la ventana y queda el proceso activo.

http://harbour.foroslatinos.net/t54-problema-para-ejecutar-hola-mundo

Bien por ellos.

Anónimo dijo...

Hola rene

Soy Angeles Resendiz te comento que tengo una aplicacion en clipper 5.3b y la quiero migrar a xharbour, agrego todos loe prg al proyecto los compilo y de genera el ejecutable pero al ejecutarlo solo me aparece una pantalla negra y de ahi no pasa me gustaria saber que estoy haciendo mal.

te agradesco tu ayuda
saludos

Anónimo dijo...

Hola a tod@s, He introducido todos los datos para bajar el XEdit pero al pulsar el botón de enviar, me dice mi direccion de mail no es válido, cosa que no es cierta y no me envia nada para poder bajarlo. Por favor si podrian ayudarme, me mail es ruinsa2009@gmail.com