MIGRACION DE XHARBOUR A HARBOUR

User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

MIGRACION DE XHARBOUR A HARBOUR

Post by Manuel Valdenebro »

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?
Last edited by Manuel Valdenebro on Tue Jun 24, 2014 7:41 pm, edited 2 times in total.
Un saludo

Manuel
hmpaquito
Posts: 1200
Joined: Thu Oct 30, 2008 2:37 pm

Re: MIGRACION DE XHARBOUR A HARBOUR

Post by hmpaquito »

hb_At( <cSearch>, <cString>, [<nStart>], [<nEnd>] ) --> nPos
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: MIGRACION DE XHARBOUR A HARBOUR

Post by Antonio Linares »

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 :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: MIGRACION DE XHARBOUR A HARBOUR

Post by Manuel Valdenebro »

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?
Un saludo

Manuel
hmpaquito
Posts: 1200
Joined: Thu Oct 30, 2008 2:37 pm

Re: MIGRACION DE XHARBOUR A HARBOUR

Post by hmpaquito »

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....

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
 
Saludos
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: MIGRACION DE XHARBOUR A HARBOUR

Post by Manuel Valdenebro »

Muchas gracias
Un saludo

Manuel
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: MIGRACION DE XHARBOUR A HARBOUR

Post by Antonio Linares »

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 :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: MIGRACION DE XHARBOUR A HARBOUR

Post by Manuel Valdenebro »

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"/>
Un saludo

Manuel
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: MIGRACION DE XHARBOUR A HARBOUR

Post by Antonio Linares »

Manuel,

Revisa las librerias que enlazamos desde samples\buildh.bat

Que herramienta estas usando para construir tus EXEs ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: MIGRACION DE XHARBOUR A HARBOUR

Post by Manuel Valdenebro »

Antonio Linares wrote: Revisa las librerias que enlazamos desde samples\buildh.bat
Que herramienta estas usando para construir tus EXEs ?
Gracias Antonio por contestar.

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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: MIGRACION DE XHARBOUR A HARBOUR (SOLUCIONADO)

Post by Antonio Linares »

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).
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: MIGRACION DE XHARBOUR A HARBOUR

Post by Manuel Valdenebro »

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?
Un saludo

Manuel
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: MIGRACION DE XHARBOUR A HARBOUR

Post by Antonio Linares »

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:

Code: Select all

HB_FUNC( TW_GETNEXTSOURCENAME )
{
   hb_retl( TWAIN_GetNextSourceName( hb_parc( 1 ) ) );
}
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: MIGRACION DE XHARBOUR A HARBOUR

Post by Antonio Linares »

E igual para la otra función:

BOOL EZTAPI TWAIN_GetDefaultSourceName(LPSTR pzName);

luego debería ser:

Code: Select all

HB_FUNC( TW_GETDEFAULTSOURCENAME )
{
   hb_retl( TWAIN_GetDefaultSourceName( hb_parc( 1 ) ) );
}
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Manuel Valdenebro
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Re: MIGRACION DE XHARBOUR A HARBOUR

Post by Manuel Valdenebro »

Buenos dias Antonio,

Realizado _, siguen los mismos warning.
Un saludo

Manuel
Post Reply