Page 1 of 1

Problemas con FWH/HARBOUR

PostPosted: Tue Oct 24, 2006 2:00 pm
by Adolfo
Antonio...

Yo trabajo con xHarbour.com de Febrero 2006 y FWH2.6, uso RMDBFCDX y no he tenido problemas.

A solicitud de una empresa que trabaja con Harbour y FWH28 he empezado a traspasar unos modulos que yo poseo en Xharbour.com para un sistema muy grande que ellos poseen. Sin embargo no he podido hacer absolutamente nada... a continuacion los errores y problemas que he tenido.

1.- Situacion.

FWH28
Fiveh.lib 1.395 kb 17/09/2006 13:35
Fivehc.lib 341 kb 18/09/2006 1.56
Harbour ( version descargada desde Fivetechsoft.com)

El xMate se queja de la inexistencia de GTWIN.LIB, lo mismo Verce.
Al colocar "solo" las libs que vienen con esta version de FWH en los parametros del linkeador, se genera el exe, pero no realiza absolutamente nada.


2.- Situacion.

FWH28
Fiveh.lib 1.395 kb 17/09/2006 13:35
Fivehc.lib 341 kb 18/09/2006 1.56
Harbour ( version descargada desde Harbour-Project.org)

El xMate se queja de referencias externas _hb_ProcessSymbolsEx y de _hb_objHasMessage y no linkea.

Alguna ayuda, que tengo mal.... si lo hago a travez del Buildh.bat, ocurre exactamente lo mismo.

Si el mismo ejemplo lo compilo y linkeo a travez del Xbuild de xHB y mis versiones de Xhb y FWH no tengo problemas.

Agradecido de antemano.

PostPosted: Tue Oct 24, 2006 3:28 pm
by Manuel Aranda
Al parecer Gtwin.lib dejó de existir. Para que VERCE te deje seguir copia en harbour/lib gtgui.lib como gtwin.lib

Un saludo,
Manuel

PostPosted: Tue Oct 24, 2006 3:40 pm
by Adolfo
Manuel..

Si GTWIN "dejo de existir" no deberia eso estar comentado en algun lugar, quizas en el "what's new" o algo parecido... si no es asi.. algo esta mal... o no.

Sin embargo en la version descargada desde Harbour-Project.. si existe y se instala.

Aun con esa version aparecen esas referencias externas y no linkea...

Antonio ?

PostPosted: Tue Oct 24, 2006 4:50 pm
by Manuel Aranda
Adolfo, lo leí en este mismo foro. Busca por "GTWIN" y encontrarás un montón de referencias. Por ejemplo: http://fivetechsoft.com/forums/viewtopic.php?t=3569

Un saludo,
Manuel

PostPosted: Tue Oct 24, 2006 6:39 pm
by Antonio Linares
Adolfo,

1) Renombra GTGUI.lib como GTWIN.lib

En FWH whatsnew.txt:

* New: IMPORTANT: Due to recent changes in Harbour and xHarbour, GTGUI.LIB must be linked instead of GTWIN.LIB.

PostPosted: Wed Oct 25, 2006 11:55 am
by Adolfo
Eso era Antonio.... Solucionado.

Sin embargo aun me encuentro con un problema que te habia comentado meses atras... necesito enviar dos CHR(0) a un ACTIVEX, pero no me es posible por lo siguiente. Ejecuta lo siguiente. Uso Harbour (de Fivetechsoft.com) y FWH28 (septiembre) para este ej.

Extension:=chr(2) + Chr(1)
MsgStop(len(Extension),"Extension Len()")
MsgStop(Len(AnsiToWide( Extension )),"Extension Len(AnsiToWide)")
MsgInfo(Len( WideToAnsi(AnsiToWide(Extension))) == Len(Extension))

Resultados 2,5,.T. Todo Bien

Extension:=chr(0) + Chr(1)
MsgStop(len(Extension),"Extension Len()")
MsgStop(Len(AnsiToWide( Extension )),"Extension Len(AnsiToWide)")
MsgInfo(Len( WideToAnsi(AnsiToWide(Extension))) == Len(Extension))

Resultados 2,1,.F. Todo mal

Extension:=Chr(0) + Chr(0)
MsgStop(len(Extension),"Extension Len()")
MsgStop(Len(AnsiToWide( Extension )),"Extension Len(AnsiToWide)" )
MsgInfo(Len( WideToAnsi(AnsiToWide(Extension))) == Len(Extension))

Resultados 2,1,.F. Todo Mal

Por lo que al enviar el String al OCX me falla, ya que no envia nada. Existira otra forma de Enviar los CHR(0) al OCX.
En xHarbour lo Solucione con la Ayuda de la Funcion VTArrayWrapper(), pero ahora lo necesito solo para Harbour..

Gracias de antemano..

PostPosted: Wed Oct 25, 2006 6:14 pm
by Antonio Linares
Adolfo,

Por lo visto los dobles ceros son interpretados como final de cadena por las funciones de Windows de conversión a wide.

Una solución sería que guardes el valor de cada byte convertido a wide (dos bytes) y que construyas tu mismo la cadena a enviar:
Code: Select all  Expand view
   local WCero := AnsiToWide( Chr( 0 ) )
   local WUno  := AnsiToWide( Chr( 1 ) )
   local WDos  := AnsiToWide( Chr( 2 ) )

   local WExtension := WCero + WUno
   ...

PostPosted: Thu Oct 26, 2006 12:12 pm
by Adolfo
Antonio....

Eso soluciona lo de las pruebas, pero aun no envia bien los CHR(0)..
existira alguna forma de hacer un CHR2(), como para lograr enviar el correcto valor que requiere el OCX, porque segun la descripcion de la funcion en el Codigo fuente, el CHR(0) no envia el valor, sino que el caracter NULL y eso causa mi problema...

Caulquier ayuda sera bienvenida..

Grax....