MIGRACION DE XHARBOUR A HARBOUR
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
MIGRACION DE XHARBOUR A HARBOUR
Siguiendo las recomendaciones, me he decidido a probar cambiar una de mis aplicaciones que corre en xHarbour+FWH a Harbour+FWH.
Con xHarbour no tengo ningún problema.
1) He compilado mi librería privada, sin problemas.
2) He añadido a los ficheros fivewin.ch y winapi.ch mis definiciones personales.
3) Trabajo con xEdit y simplemente he tenido que cambiar en el ambiente FIVEWIN el compilador de xHarbour a Harbour, cambiando los directorios.
4) Mi compilador es el antiguo BCC55.
Al compilar he visto que la función AT() en Harbour es exactamente igual que en Clipper y no tiene los dos parámetros extendidos de xHarbour nStart y nEnd,me imagino que se podría sustituir con un substring:
Actualmente: nFinPoint := AT("-", cCalle, 8 ) cambiar a nFinPoint := AT("-", SUBS(cCalle, 8 ) )
¿Hay otra solución?
Por otra parte veo que no admite el caracter | en el siguiente código:
STYLE CBS_DROPDOWNLIST | CBS_NOINTEGRALHEIGHT
¿Alguna idea?
Con xHarbour no tengo ningún problema.
1) He compilado mi librería privada, sin problemas.
2) He añadido a los ficheros fivewin.ch y winapi.ch mis definiciones personales.
3) Trabajo con xEdit y simplemente he tenido que cambiar en el ambiente FIVEWIN el compilador de xHarbour a Harbour, cambiando los directorios.
4) Mi compilador es el antiguo BCC55.
Al compilar he visto que la función AT() en Harbour es exactamente igual que en Clipper y no tiene los dos parámetros extendidos de xHarbour nStart y nEnd,me imagino que se podría sustituir con un substring:
Actualmente: nFinPoint := AT("-", cCalle, 8 ) cambiar a nFinPoint := AT("-", SUBS(cCalle, 8 ) )
¿Hay otra solución?
Por otra parte veo que no admite el caracter | en el siguiente código:
STYLE CBS_DROPDOWNLIST | CBS_NOINTEGRALHEIGHT
¿Alguna idea?
Last edited by Manuel Valdenebro on Tue Jun 24, 2014 7:41 pm, edited 2 times in total.
Un saludo
Manuel
Manuel
Re: MIGRACION DE XHARBOUR A HARBOUR
hb_At( <cSearch>, <cString>, [<nStart>], [<nEnd>] ) --> nPos
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: MIGRACION DE XHARBOUR A HARBOUR
Manuel,
> STYLE CBS_DROPDOWNLIST | CBS_NOINTEGRALHEIGHT
Puedes usar la función nOr() de FWH:
STYLE nOr( CBS_DROPDOWNLIST, CBS_NOINTEGRALHEIGHT )
Ya te falta muy poco y verás que bien funciona Harbour
> STYLE CBS_DROPDOWNLIST | CBS_NOINTEGRALHEIGHT
Puedes usar la función nOr() de FWH:
STYLE nOr( CBS_DROPDOWNLIST, CBS_NOINTEGRALHEIGHT )
Ya te falta muy poco y verás que bien funciona Harbour
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
Re: MIGRACION DE XHARBOUR A HARBOUR
Muchas gracias Antonio y Paquito,
Con la función STR() mas de lo mismo. xHarbour tiene un cuarto parámetro lógico que si es true, hace un LTRIM().
Estoy usando como manual de Harbour el de la web http://harbour.github.io/doc/index.html que es un poco inoperativo, porque cuesta buscar cada uno de los comandos. ¿Tiene Harbour otro tipo de manual, donde sea mas fácil leer las funciones que tiene y sus especificaciones?
Con la función STR() mas de lo mismo. xHarbour tiene un cuarto parámetro lógico que si es true, hace un LTRIM().
Estoy usando como manual de Harbour el de la web http://harbour.github.io/doc/index.html que es un poco inoperativo, porque cuesta buscar cada uno de los comandos. ¿Tiene Harbour otro tipo de manual, donde sea mas fácil leer las funciones que tiene y sus especificaciones?
Un saludo
Manuel
Manuel
Re: MIGRACION DE XHARBOUR A HARBOUR
Manuel,
En http://www.harbourdoc.com.br/ no he visto equivalente al Str() de xHarbour... no se si en el Manual de Harbour de Giovanni pondra algo... tb. hbIde de Pritpal Bedi también tiene un manual de Harbour.... Alexander Kresin también tiene un manual http://www.kresin.ru/en/
Mi parecer es el siguiente: la sobrecarga de parametros algunas veces no me gusta... puede ser el caso del Str() de xHarbour.
Lo que yo en tu caso para tener identificados TODOS _ de cocnversion seria hacer unos translates de conversion y asi tenerlos todos
identificados para un mejor mantenimiento del programa. Además, mejorando un poquito podrás conservar la compatibilidad con xHarbour... que viene muy bien al menos durante el período que dure la conversión hasta hacerla completa de Harbour. Y por si fuera poco, el .ch será un recopilatorio de las transformaciones que se pueden hacer y que podremos completar y compartir entre todos....
Saludos
En http://www.harbourdoc.com.br/ no he visto equivalente al Str() de xHarbour... no se si en el Manual de Harbour de Giovanni pondra algo... tb. hbIde de Pritpal Bedi también tiene un manual de Harbour.... Alexander Kresin también tiene un manual http://www.kresin.ru/en/
Mi parecer es el siguiente: la sobrecarga de parametros algunas veces no me gusta... puede ser el caso del Str() de xHarbour.
Lo que yo en tu caso para tener identificados TODOS _ de cocnversion seria hacer unos translates de conversion y asi tenerlos todos
identificados para un mejor mantenimiento del programa. Además, mejorando un poquito podrás conservar la compatibilidad con xHarbour... que viene muy bien al menos durante el período que dure la conversión hasta hacerla completa de Harbour. Y por si fuera poco, el .ch será un recopilatorio de las transformaciones que se pueden hacer y que podremos completar y compartir entre todos....
Code: Select all
// x2h.ch
// xHarbour to Harbour translation
#ifdef __XHARBOUR__
#Translate X2H_STR(<x1>, <x2>, <x3>[, <x4>]) => Str(<x1>, <x2>, <x3>, <x4> )
#Translate X2H_AT(.....................
#else
#Translate X2H_STR(<x1>, <x2>, <x3>[, <x4>]) => If(<.x4.> [.and. <x4>], LTrim(Str(<x1>, <x2>, <x3>)), Str(<x1>, <x2>, <x3>) )
#Translate X2H_AT(.....................
#endif
// Ejemplo de uso...
FUNCTION Main()
c:= X2H_STR(10, 5, 2, .t.)
RETURN NIL
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: MIGRACION DE XHARBOUR A HARBOUR
Manuel,
Aqui tienes una copia de la documentación de Harbour, que colgamos en nuestro servidor para asi tenerla a mano:
http://www.fivetechsoft.com/harbour-doc ... -guide.htm
En cuanto a las funciones que comentas, puedes hacer como te indica Paco, ó simplemente crearte una sencillas funciones que te proporcionen la funcionalidad extra que necesites. Yo siempre he sido contrario a usar capacidades "propias" de xHarbour, para asi tener la libertad de construir con Harbour ó xHarbour (puesto que soportamos ambos). Pero ya verás que son _ mínimos que podrás solucionar facilmente
Aqui tienes una copia de la documentación de Harbour, que colgamos en nuestro servidor para asi tenerla a mano:
http://www.fivetechsoft.com/harbour-doc ... -guide.htm
En cuanto a las funciones que comentas, puedes hacer como te indica Paco, ó simplemente crearte una sencillas funciones que te proporcionen la funcionalidad extra que necesites. Yo siempre he sido contrario a usar capacidades "propias" de xHarbour, para asi tener la libertad de construir con Harbour ó xHarbour (puesto que soportamos ambos). Pero ya verás que son _ mínimos que podrás solucionar facilmente
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
Re: MIGRACION DE XHARBOUR A HARBOUR
Al compilar me da ahora tres errores:
Error: Unresolved external '_HB_FUN_HB_GT_GUI_DEFAULT' referenced from F:\FWH2012\LIB\FIVEH.LIB|ERRSYSW
Error: Unresolved external '_hb_gcAlloc' referenced from F:\FWH2012\LIB\DOLPHIN.LIB|function
Error: Unresolved external '_hb_retclenAdopt' referenced from F:\FWH2012\LIB\DOLPHIN.LIB|function
Respecto a Dolphin, he compilado las fuentes con el setenvh.bat para Harbour y creado la nueva lib.
Parece que ya queda menos.
Estas son las librerias del proyecto:
<Library Filename="F:\fwh2012\lib\FiveH.lib" Link="Y"/>
<Library Filename="F:\fwh2012\lib\FiveHC.lib" Link="Y"/>
<Library Filename="F:\fwh2012\lib\dolphin.lib" Link="Y"/>
<Library Filename="F:\fwh2012\lib\libmysql.lib" Link="Y"/>
<Library Filename="[harbour]xhb.lib" Link="Y"/>
<Library Filename="[harbour]hbrtl.lib" Link="Y"/>
<Library Filename="[harbour]hbvm.lib" Link="Y"/>
<Library Filename="[harbour]gtwin.lib" Link="Y"/>
<Library Filename="[harbour]hblang.lib" Link="Y"/>
<Library Filename="[harbour]hbmacro.lib" Link="Y"/>
<Library Filename="[harbour]hbcommon.lib" Link="Y"/>
<Library Filename="[harbour]hbpp.lib" Link="Y"/>
<Library Filename="[harbour]hbcpage.lib" Link="Y"/>
<Library Filename="[harbour]hbdebug.lib" Link="Y"/>
<Library Filename="[harbour]hbrdd.lib" Link="Y"/>
<Library Filename="[harbour]rddntx.lib" Link="Y"/>
<Library Filename="[harbour]hbwin.lib" Link="Y"/>
<Library Filename="[harbour]hbcplr.lib" Link="Y"/>
<Library Filename="[harbour]rddcdx.lib" Link="Y"/>
<Library Filename="[harbour]rddfpt.lib" Link="Y"/>
<Library Filename="[harbour]hbsix.lib" Link="Y"/>
<Library Filename="[harbour]hbziparc.lib" Link="Y"/>
<Library Filename="[harbour]hbmzip.lib" Link="Y"/>
<Library Filename="[harbour]hbzlib.lib" Link="Y"/>
<Library Filename="[harbour]minizip.lib" Link="Y"/>
<Library Filename="[harbour]png.lib" Link="Y"/>
<Library Filename="[harbour]hbct.lib" Link="Y"/>
<Library Filename="[harbour]hbpcre.lib" Link="Y"/>
<Library Filename="[bcc]c0w32.obj" Link="Y"/>
<Library Filename="[bcc]psdk\odbc32.lib" Link="Y"/>
<Library Filename="[bcc]psdk\msimg32.lib" Link="Y"/>
<Library Filename="[bcc]cw32.lib" Link="Y"/>
<Library Filename="[bcc]import32.lib" Link="Y"/>
<Library Filename="[bcc]wininet.lib" Link="Y"/>
<Library Filename="[bcc]PSDK\psapi.lib" Link="Y"/>
Error: Unresolved external '_HB_FUN_HB_GT_GUI_DEFAULT' referenced from F:\FWH2012\LIB\FIVEH.LIB|ERRSYSW
Error: Unresolved external '_hb_gcAlloc' referenced from F:\FWH2012\LIB\DOLPHIN.LIB|function
Error: Unresolved external '_hb_retclenAdopt' referenced from F:\FWH2012\LIB\DOLPHIN.LIB|function
Respecto a Dolphin, he compilado las fuentes con el setenvh.bat para Harbour y creado la nueva lib.
Parece que ya queda menos.
Estas son las librerias del proyecto:
<Library Filename="F:\fwh2012\lib\FiveH.lib" Link="Y"/>
<Library Filename="F:\fwh2012\lib\FiveHC.lib" Link="Y"/>
<Library Filename="F:\fwh2012\lib\dolphin.lib" Link="Y"/>
<Library Filename="F:\fwh2012\lib\libmysql.lib" Link="Y"/>
<Library Filename="[harbour]xhb.lib" Link="Y"/>
<Library Filename="[harbour]hbrtl.lib" Link="Y"/>
<Library Filename="[harbour]hbvm.lib" Link="Y"/>
<Library Filename="[harbour]gtwin.lib" Link="Y"/>
<Library Filename="[harbour]hblang.lib" Link="Y"/>
<Library Filename="[harbour]hbmacro.lib" Link="Y"/>
<Library Filename="[harbour]hbcommon.lib" Link="Y"/>
<Library Filename="[harbour]hbpp.lib" Link="Y"/>
<Library Filename="[harbour]hbcpage.lib" Link="Y"/>
<Library Filename="[harbour]hbdebug.lib" Link="Y"/>
<Library Filename="[harbour]hbrdd.lib" Link="Y"/>
<Library Filename="[harbour]rddntx.lib" Link="Y"/>
<Library Filename="[harbour]hbwin.lib" Link="Y"/>
<Library Filename="[harbour]hbcplr.lib" Link="Y"/>
<Library Filename="[harbour]rddcdx.lib" Link="Y"/>
<Library Filename="[harbour]rddfpt.lib" Link="Y"/>
<Library Filename="[harbour]hbsix.lib" Link="Y"/>
<Library Filename="[harbour]hbziparc.lib" Link="Y"/>
<Library Filename="[harbour]hbmzip.lib" Link="Y"/>
<Library Filename="[harbour]hbzlib.lib" Link="Y"/>
<Library Filename="[harbour]minizip.lib" Link="Y"/>
<Library Filename="[harbour]png.lib" Link="Y"/>
<Library Filename="[harbour]hbct.lib" Link="Y"/>
<Library Filename="[harbour]hbpcre.lib" Link="Y"/>
<Library Filename="[bcc]c0w32.obj" Link="Y"/>
<Library Filename="[bcc]psdk\odbc32.lib" Link="Y"/>
<Library Filename="[bcc]psdk\msimg32.lib" Link="Y"/>
<Library Filename="[bcc]cw32.lib" Link="Y"/>
<Library Filename="[bcc]import32.lib" Link="Y"/>
<Library Filename="[bcc]wininet.lib" Link="Y"/>
<Library Filename="[bcc]PSDK\psapi.lib" Link="Y"/>
Un saludo
Manuel
Manuel
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: MIGRACION DE XHARBOUR A HARBOUR
Manuel,
Revisa las librerias que enlazamos desde samples\buildh.bat
Que herramienta estas usando para construir tus EXEs ?
Revisa las librerias que enlazamos desde samples\buildh.bat
Que herramienta estas usando para construir tus EXEs ?
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
Re: MIGRACION DE XHARBOUR A HARBOUR
Gracias Antonio por contestar.Antonio Linares wrote: Revisa las librerias que enlazamos desde samples\buildh.bat
Que herramienta estas usando para construir tus EXEs ?
Me faltaba la libreria gtwin
Last edited by Manuel Valdenebro on Tue Jun 24, 2014 2:38 pm, edited 2 times in total.
Un saludo
Manuel
Manuel
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: MIGRACION DE XHARBOUR A HARBOUR (SOLUCIONADO)
Manuel,
Estás enlazando gtgui.lib además de gtwin.lib ?
Sería muy conveniente que comiences a usar BCC582. BCC55 es bastante antiguo ya y le faltan cosas importantes que estan en BCC582.
Envíame un email y te indico desde donde puedes descargarlo (Embarcadero).
Estás enlazando gtgui.lib además de gtwin.lib ?
Sería muy conveniente que comiences a usar BCC582. BCC55 es bastante antiguo ya y le faltan cosas importantes que estan en BCC582.
Envíame un email y te indico desde donde puedes descargarlo (Embarcadero).
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
Re: MIGRACION DE XHARBOUR A HARBOUR
Actualizado el compilador a BCC582.
Pero ahora sale un warning que antes no salía con BCC55. Se trata de dos códigos en C de la libreria de Thefull Tscan:
Warning W8075 TSCAN.prg 495: Suspicious pointer conversion in function HB_FUN_TW_GETNEXTSOURCENAME
Warning W8075 TSCAN.prg 500: Suspicious pointer conversion in function HB_FUN_TW_GETDEFAULTSOURCENAME
Este es el código.
HB_FUNC( TW_GETNEXTSOURCENAME )
{
hb_retni( TWAIN_GetNextSourceName( hb_parc( 1 ) ) );
}
HB_FUNC( TW_GETDEFAULTSOURCENAME )
{
hb_retni( TWAIN_GetDefaultSourceName( hb_parc( 1 ) ));
}
¿Pudiera ser que la librería de TheFull estuviera compilada con BCC55?
Pero ahora sale un warning que antes no salía con BCC55. Se trata de dos códigos en C de la libreria de Thefull Tscan:
Warning W8075 TSCAN.prg 495: Suspicious pointer conversion in function HB_FUN_TW_GETNEXTSOURCENAME
Warning W8075 TSCAN.prg 500: Suspicious pointer conversion in function HB_FUN_TW_GETDEFAULTSOURCENAME
Este es el código.
HB_FUNC( TW_GETNEXTSOURCENAME )
{
hb_retni( TWAIN_GetNextSourceName( hb_parc( 1 ) ) );
}
HB_FUNC( TW_GETDEFAULTSOURCENAME )
{
hb_retni( TWAIN_GetDefaultSourceName( hb_parc( 1 ) ));
}
¿Pudiera ser que la librería de TheFull estuviera compilada con BCC55?
Un saludo
Manuel
Manuel
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: MIGRACION DE XHARBOUR A HARBOUR
Manuel,
Esos warnings se deben posiblemente a que BCC582 funciona mejor que BCC55, puesto que la declaración de esa función es:
BOOL EZTAPI TWAIN_GetNextSourceName(LPSTR pzName);
luego el código debería ser:
Esos warnings se deben posiblemente a que BCC582 funciona mejor que BCC55, puesto que la declaración de esa función es:
BOOL EZTAPI TWAIN_GetNextSourceName(LPSTR pzName);
luego el código debería ser:
Code: Select all
HB_FUNC( TW_GETNEXTSOURCENAME )
{
hb_retl( TWAIN_GetNextSourceName( hb_parc( 1 ) ) );
}
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: MIGRACION DE XHARBOUR A HARBOUR
E igual para la otra función:
BOOL EZTAPI TWAIN_GetDefaultSourceName(LPSTR pzName);
luego debería ser:
BOOL EZTAPI TWAIN_GetDefaultSourceName(LPSTR pzName);
luego debería ser:
Code: Select all
HB_FUNC( TW_GETDEFAULTSOURCENAME )
{
hb_retl( TWAIN_GetDefaultSourceName( hb_parc( 1 ) ) );
}
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
Re: MIGRACION DE XHARBOUR A HARBOUR
Buenos dias Antonio,
Realizado _, siguen los mismos warning.
Realizado _, siguen los mismos warning.
Un saludo
Manuel
Manuel