MIGRACION DE XHARBOUR A HARBOUR

MIGRACION DE XHARBOUR A HARBOUR

Postby Manuel Valdenebro » Mon Jun 23, 2014 10:28 am

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

Postby hmpaquito » Mon Jun 23, 2014 12:05 pm

hb_At( <cSearch>, <cString>, [<nStart>], [<nEnd>] ) --> nPos
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: MIGRACION DE XHARBOUR A HARBOUR

Postby Antonio Linares » Mon Jun 23, 2014 1:51 pm

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

Re: MIGRACION DE XHARBOUR A HARBOUR

Postby Manuel Valdenebro » Mon Jun 23, 2014 3:15 pm

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

Postby hmpaquito » Mon Jun 23, 2014 3:51 pm

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 los casos 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  Expand view  RUN
// 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
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: MIGRACION DE XHARBOUR A HARBOUR

Postby Manuel Valdenebro » Mon Jun 23, 2014 8:00 pm

Muchas gracias
Un saludo

Manuel
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

Postby Antonio Linares » Mon Jun 23, 2014 9:10 pm

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-docs/harbour-reference-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 unos cambios mínimos que podrás solucionar facilmente :-)
regards, saludos

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

Re: MIGRACION DE XHARBOUR A HARBOUR

Postby Manuel Valdenebro » Mon Jun 23, 2014 9:37 pm

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

Re: MIGRACION DE XHARBOUR A HARBOUR

Postby Antonio Linares » Tue Jun 24, 2014 10:21 am

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

Re: MIGRACION DE XHARBOUR A HARBOUR

Postby Manuel Valdenebro » Tue Jun 24, 2014 2:15 pm

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

Re: MIGRACION DE XHARBOUR A HARBOUR (SOLUCIONADO)

Postby Antonio Linares » Tue Jun 24, 2014 2:35 pm

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

Re: MIGRACION DE XHARBOUR A HARBOUR

Postby Manuel Valdenebro » Tue Jun 24, 2014 7:44 pm

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

Re: MIGRACION DE XHARBOUR A HARBOUR

Postby Antonio Linares » Tue Jun 24, 2014 9:22 pm

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  Expand view  RUN
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: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: MIGRACION DE XHARBOUR A HARBOUR

Postby Antonio Linares » Tue Jun 24, 2014 9:24 pm

E igual para la otra función:

BOOL EZTAPI TWAIN_GetDefaultSourceName(LPSTR pzName);

luego debería ser:
Code: Select all  Expand view  RUN
HB_FUNC( TW_GETDEFAULTSOURCENAME )
{
   hb_retl( TWAIN_GetDefaultSourceName( hb_parc( 1 ) ) );
}
regards, saludos

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

Re: MIGRACION DE XHARBOUR A HARBOUR

Postby Manuel Valdenebro » Wed Jun 25, 2014 6:13 am

Buenos dias Antonio,

Realizado los cambios, siguen los mismos warning.
Un saludo

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

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot], Rick Lipkin and 39 guests