Page 1 of 1

Ayuda FWH 2006 xHB a FWH 2014 Harbour

PostPosted: Fri Sep 05, 2014 7:05 pm
by jmartial
Hola,

Necesito pasar una aplicación bastante grande, desde FWH del 2.006 con xHarbour a FWH 2014 con Harbour.

Me encuentro varios problemas al compilar y no encuentro cual es la razón, a ver si alguien me puede orientar.

1) En una definición de clase, si uso PRIVATE: o PUBLIC: para definir las DATA´s en estos ámbitos de visibilidad, Harbour se queja con este error:

Compilando lremesa.prg...
lremesa.prg(1435) Error E0020 Incomplete statement or unbalanced delimiters
lremesa.prg(1442) Error E0020 Incomplete statement or unbalanced delimiters

2) En este código:

Do Case
Case cType$"C" .OR. cType$"M"
x := comillas( "%"+Alltrim( x )+"%" )

Case cType == "N"
x := if(valtype(x)="C",val(x),x)
x := alltrim(Str( x, nLen, nDec ))

Case cType == "D"
TRY
if Empty(x)
x := "null"
else
x := comillas(if(valtype(x)="C", x, DtoS(x)))
endif
CATCH
msginfo( "Se ha encontrado una fecha errónea"+CRLF+ valtype(x) )
END
EndCase

da el error:

TDomDbf.prg(454) Error E0012 ENDCASE does not match DO CASE


3) En esta línea en C:

hb_storc( cAddr, -1, ++n );

da el error:

Error E2227 xDomi.prg 256: Extra parameter in call to hb_storc in function HB_FUN_GETLOCALIP


4) Por último unos warnings que no me gustan:

Compilando xZoom.prg...
C:\local\fwh2014\include\WinApi.ch(25) Warning W0002 Redefinition or duplicate definition of #define WS_CHILD
C:\local\fwh2014\include\WinApi.ch(27) Warning W0002 Redefinition or duplicate definition of #define WS_CLIPSIBLINGS
C:\local\fwh2014\include\WinApi.ch(37) Warning W0002 Redefinition or duplicate definition of #define WS_BORDER
C:\local\fwh2014\include\WinApi.ch(38) Warning W0002 Redefinition or duplicate definition of #define WS_DLGFRAME
C:\local\fwh2014\include\WinApi.ch(42) Warning W0002 Redefinition or duplicate definition of #define WS_THICKFRAME


Por supuesto con xHarbour compila bien.

Un Saludo,
Joaquín Martínez

Re: Ayuda FWH 2006 xHB a FWH 2014 Harbour

PostPosted: Fri Sep 05, 2014 7:16 pm
by jmartial
Una cosa solucionada.

El error en C es que hay que cambiar hb_storc POR hb_storvc.


Por si a alguien le sirve.


Un Saludo,
Joaquín Martínez

Otra cosa solucionada y otro problema

PostPosted: Fri Sep 05, 2014 7:35 pm
by jmartial
Hola,


Lo del ámbito PRIVATE: y PUBLIC:, ha sido sustituído en Harbour por PROTECTED: y VISIBLE: respectivamente.

Lo que no sé es como hacer que funcione al compilar en XHarbour y en Harbour a la vez. ¿Qué condicionante podría poner que lo detectara?

Otro problema que me he encontrado es en código C:

hb_retnl( (LONG) pp_redir( hb_parc(1) ) );

Me da el siguiente warning:

Compilando TpppV2.prg...
Warning W8075 TpppV2.prg 1784: Suspicious pointer conversion in function HB_FUN_PP_REDIR

Re: Ayuda FWH 2006 xHB a FWH 2014 Harbour

PostPosted: Sat Sep 06, 2014 7:11 am
by Antonio Linares
Antes de hb_parc() escribe ( char * )

Re: Ayuda FWH 2006 xHB a FWH 2014 Harbour

PostPosted: Sat Sep 06, 2014 8:59 am
by jmartial
Gracias Antonio,

Era eso exactamente. A ver si soy capaz de solucionar el resto y consigo ejecutar mi aplicación por primera vez con FWH yharbour 2014.

Un Saludo,
Joaquín Martínez

Re: Ayuda FWH 2006 xHB a FWH 2014 Harbour

PostPosted: Sat Sep 06, 2014 9:38 am
by Antonio Linares
Joaquin,

Compilando xZoom.prg...
C:\local\fwh2014\include\WinApi.ch(25) Warning W0002 Redefinition or duplicate definition of #define WS_CHILD
C:\local\fwh2014\include\WinApi.ch(27) Warning W0002 Redefinition or duplicate definition of #define WS_CLIPSIBLINGS
C:\local\fwh2014\include\WinApi.ch(37) Warning W0002 Redefinition or duplicate definition of #define WS_BORDER
C:\local\fwh2014\include\WinApi.ch(38) Warning W0002 Redefinition or duplicate definition of #define WS_DLGFRAME
C:\local\fwh2014\include\WinApi.ch(42) Warning W0002 Redefinition or duplicate definition of #define WS_THICKFRAME


Comenta esos defines WS_... que tienes duplicados en xZoom.prg. Este es uno de los detalles en que se ve que Harbour reporta correctamente eso y xharbour lo ignora.