FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour ayuda construccion de xharbour desde svn
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
ayuda construccion de xharbour desde svn
Posted: Wed Feb 04, 2015 02:51 AM
estimado estoy intentando construir xharbour ultima versi贸n con la particularidad que deseo que la opci贸n
memory tracing and statistics este en off.

noten que he agregado HB_FM_STATISTICS_OFF a la definicio y aun asi esta en on.

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: ayuda construccion de xharbour desde svn
Posted: Wed Feb 04, 2015 06:39 AM

Carlos,

Por defecto no lo construye con esa opci贸n en OFF ?

Por lo general nunca se le ponen esas opciones por defecto para no enlentecerlo, por eso creo que no tienes que especificarle nada.

Enrico nos indic贸 recientemente en donde puedes descargar un build de xharbour casi a diario.

Y como yo siempre erre que erre: Y por que no migras a Harbour ? :-)

Lee esto y entender谩s las razones de las m谩s importantes:

viewtopic.php?f=6t=30084

&

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 563
Joined: Sun Oct 09, 2005 07:23 PM
Re: ayuda construccion de xharbour desde svn
Posted: Wed Feb 04, 2015 08:50 AM

Como dice Antonio c谩mbiate a Harbour. Aunque en principio de pereza y sensaci贸n de peligro por tocar c贸digo que funciona merece la pena porque son muy pocos los cambios que hay que hacer. Muy pocos. Y de paso puedes construir en 64 bits una vez que has hecho el cambio a Harbour. Creo que realmente merece la pena.

Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: ayuda construccion de xharbour desde svn
Posted: Wed Feb 04, 2015 02:10 PM
Antonio

si lo construyo con esa opci贸n en off, prueba de ello es que en la parte de arriba del screenshot "harbour compiler switch:" sale lo que defini en la var c_usr.

estoy claro de la superioridad t茅cnica de harbour, ya que sigo al grupo de desarrollo, estudio codigo del repositorio, leeo changelog y txt tecnicos. :-)
-----------------------------------------

tengo dos poderosas razones para no abandonar xHarbour: una sentimental y una t茅cnica.

la sentimental:
sigo a xharbour desde que inicio, nunca he dejado de hacer algo por limitaciones o problemas del compilador.

lo t茅cnico:
uso sqlrdd, pero NO en la parte rdd ( USE tabla INDEX table), sino que uso las sentencias sql, puro y duro sql.
Code (fw): Select all Collapse
nError:=oSql:Execute( "select * from clientes",.t.,.t.,,"MYUSER" )

funciona en forma similar que ado pero en lugar de cursores en memoria que es la forma de ado de retornar las consulta, tengo los resultados de las consultas en una tablas dbf
las cuales manipulo sin problemas, luego utilizo igualmente sql para las inserciones y modificaciones de los datos
Code (fw): Select all Collapse
nError:=oSql:Exec( "UPDATE clientes SET NOMBRE='CARLOS' WHERE NUM_CLIE=10" )

y luego esto es lo mejor: uso nuevamente
Code (fw): Select all Collapse
nError:=oSql:Execute( "select * from clientes",.t.,.t.,,"MYUSER" ) )

y los datos son nuevamente cargados (ya actualizados) a la tabla dbf MYUSER la cual ya existe desde la primera vez que hice la consulta.
el sqlrdd e encarga de creala la primera vez y solo usarla las restantes veces

esto si bien es cierto es la misma funcionalidad de sqlmix pero bien hecho.
las funciones y clase que tengo implementadas con sqlrdd serian f谩cilmente portadas para usar sqlmix.
pero este rdd tiene ciertos fallos, por ejemplo en la tabla dbf resultante los campos l贸gicos no mapeado correctamente a como lo hace sqlrdd, por ejemplo
en ms sql server las columnas de tipo BIT son mapeadas a LOGICAL en la tabla dbf resultante en sqlmix no es as铆.

consultas como esta en sqlmix:
Code (fw): Select all Collapse
DBUSEAREA( .T.,, "SELECT SUM(ABONO) AS RESULTADO FROM COBROXDIA WHERE FECHA='2014-01-01'", "ABONO" )
? ABONO->RESULTADO // " 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽3500.00"

el campo RESULTADO tiene una longitud enorme.

si se pudiera mejorar SQLMIX (vaya si lo he intentado, he revisado el c贸digo pero mi nivel de c no llega a tanto, he intentado contactar al creador Mindugas creo recordar y no me responde)
se caer铆a la ultima barrera t茅cnica.

aca un ejemplo de como uso sqlrdd en esta forma para que teng谩is una idea lo f谩cil de usar sql:
Code (fw): Select all Collapse
/*-------------------------------------------------------------------------------------------------*/

#include "expats.ch"

/*-------------------------------------------------------------------------------------------------*/
/*Ok*/
PROCEDURE DocuE( cNumEmpl )
聽 聽LOCAL cNombreEmpl

聽 聽PRIVATE oDlgD, oBrwD
聽 聽PRIVATE cSql, aKInfoD

聽 聽IF EMPL->( Eof() )
聽 聽 聽 MsgInfo( "No hay empleados registrados.", "Informaci贸n" )
聽 聽 聽 RETURN
聽 聽ENDIF

聽 聽cSql 聽 聽:= "SELECT * FROM VEMPLEADOD WHERE TIPO='D' AND NUM_EMPL=" + KValToSQL( nNumEmpl )
聽 聽aKInfoD := { cSql, "EMPL_DOC" }

聽 聽IF !KQuery( cSql, NIL, "EMPL_DOC" )
聽 聽 聽 MsgAlert( KErrorText(), "Alerta" )
聽 聽 聽 RETURN
聽 聽ENDIF

聽 聽cNombreEmpl := EMPL->NOMBRECOMP

聽 聽DEFINE DIALOG oDlgD NAME "DLG_DOCUEC" OF oDlgE ICON GetIcon() FONT oFontD

聽 聽REDEFINE GET nNumEmpl ;
聽 聽 聽 ID 101 OF oDlgD ;
聽 聽 聽 WHEN FALSE

聽 聽REDEFINE GET cExpatID ;
聽 聽 聽 ID 102 OF oDlgD ;
聽 聽 聽 WHEN FALSE

聽 聽REDEFINE GET cNombreEmpl ;
聽 聽 聽 ID 103 OF oDlgD ;
聽 聽 聽 WHEN FALSE

聽 聽REDEFINE XBROWSE oBrwD ALIAS "EMPL_DOC" ;
聽 聽 聽 ID 104 OF oDlgD ;
聽 聽 聽 FONT oFontD

聽 聽ADD TO oBrwD DATA EMPL_DOC->NOMBRE+CRLF+EMPL_DOC->DESCRIPCIO 聽TITLE "Nombre de archivo"+FINL+"Descripci贸n" SIZE 350
聽 聽ADD TO oBrwD DATA EMPL_DOC->FECHA 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 TITLE "Fecha" 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽SIZE 070 LEFT

聽 聽WITH OBJECT oBrwD
聽 聽 聽 :MyConfig()
聽 聽 聽 :aCols[ 01 ]:bPaintText := { |oCol, hDC, cText, aCoord| XColDrawText( oCol, hDC, cText, aCoord ) }
聽 聽 聽 :lHScroll 聽 聽 聽:= FALSE
聽 聽 聽 :nHeaderHeight := 36
聽 聽 聽 :nFreeze 聽 聽 聽 := 2
聽 聽 聽 :nDataLines 聽 聽:= 2.5
聽 聽 聽 :nHeaderLines 聽:= 2
聽 聽 聽 :nMarqueeStyle := 7
聽 聽 聽 :bLDblClick 聽 聽:= {|| IIf( !EMPL_DOC->( Eof() ), DocuE_Visualizar(), NIL ) }
聽 聽 聽 :bDropFiles 聽 聽:= {|nRow, nCol, aFiles| DocuE_DragDropFile( aFiles ) }
聽 聽END

聽 聽REDEFINE BUTTONBMP ;
聽 聽 聽 ID 105 OF oDlgD ;
聽 聽 聽 BITMAP "BMS_ADD" ;
聽 聽 聽 TOOLTIP "Agregar documento." ;
聽 聽 聽 ACTION DocuE_Agregar( TRUE )

聽 聽REDEFINE BUTTONBMP ;
聽 聽 聽 ID 106 OF oDlgD ;
聽 聽 聽 BITMAP "BMS_DEL" ;
聽 聽 聽 TOOLTIP "Quitar documento." ;
聽 聽 聽 WHEN !EMPL_DOC->( Eof() ) ;
聽 聽 聽 ACTION DocuE_Borrar()

聽 聽REDEFINE BUTTONBMP ;
聽 聽 聽 ID 107 OF oDlgD ;
聽 聽 聽 BITMAP "BMS_VIEW" ;
聽 聽 聽 TOOLTIP "Visualizar documento." ;
聽 聽 聽 WHEN !EMPL_DOC->( Eof() ) ;
聽 聽 聽 ACTION DocuE_Visualizar()

聽 聽REDEFINE BUTTON ;
聽 聽 聽 ID 201 OF oDlgD ;
聽 聽 聽 ACTION oDlgD:END()

聽 聽ACTIVATE DIALOG oDlgD ON INIT ( DragAcceptFiles( oBrwD:hWnd, TRUE ), 1 )

聽 聽KCloseTbl( "EMPL_DOC" )

RETURN

/*-------------------------------------------------------------------------------------------------*/
/*Ok*/
PROCEDURE DocuE_DragDropFile( aFiles )
聽 聽LOCAL cArchivo 聽 聽 := ""
聽 聽LOCAL cDescripcion := Space( 80 )
聽 聽LOCAL nNumDocu

聽 聽IF Len( aFiles ) > 1
聽 聽 聽 MsgAlert( "Arrastre un archivo a la vez.", "Alerta" )
聽 聽 聽 RETURN
聽 聽ENDIF

聽 聽cArchivo := aFiles[ 01 ]

聽 聽IF !Empty( cArchivo )
聽 聽 聽 IF MsgGet( "Agregar un archivo", "Descripci贸n de archivo", @cDescripcion, "@!", "BM_DOCUMENT" )
聽 聽 聽 聽 聽IF !Empty( cDescripcion )
聽 聽 聽 聽 聽 聽 KSetErrorRT( TRUE )
聽 聽 聽 聽 聽 聽 TRY
聽 聽 聽 聽 聽 聽 聽 聽KBegin()
聽 聽 聽 聽 聽 聽 聽 聽nNumDocu := KIncCont( "CONTROL", "CONT_DOCU" )
聽 聽 聽 聽 聽 聽 聽 聽IF nNumDocu > 0
聽 聽 聽 聽 聽 聽 聽 聽 聽 KInsert( "EMPLEADOS_DOCU", { { "NUM_EMPL" 聽 , nNumEmpl 聽 聽 }, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽{ "NUM_DOCU" 聽 , nNumDocu 聽 聽 }, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽{ "TIPO" 聽 聽 聽 , "D" 聽 聽 聽 聽 聽}, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽{ "FECHA" 聽 聽 聽, Date() 聽 聽 聽 }, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽{ "DESCRIPCION", cDescripcion } } )

聽 聽 聽 聽 聽 聽 聽 聽 聽 KInsert( "DOCUMENTOS" 聽 聽, { { "NUM_DOCU" 聽 , nNumDocu 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 }, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽{ "NOMBRE" 聽 聽 , cFileNoPath( cArchivo ) 聽 聽 聽 聽 聽 聽}, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽{ "ARCHIVO" 聽 聽, HB_StrToHex( FileStr( cArchivo ) ) } } )
聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽KCommit()
聽 聽 聽 聽 聽 聽 聽 聽KReQuery( aKInfoD )
聽 聽 聽 聽 聽 聽 CATCH oError
聽 聽 聽 聽 聽 聽 聽 聽KRollback()
聽 聽 聽 聽 聽 聽 聽 聽ShowError( oError )
聽 聽 聽 聽 聽 聽 END
聽 聽 聽 聽 聽 聽 KSetErrorRT( FALSE )
聽 聽 聽 聽 聽ENDIF
聽 聽 聽 ENDIF
聽 聽ENDIF

聽 聽oBrwD:Refresh()

RETURN

/*-------------------------------------------------------------------------------------------------*/
/*Ok*/
PROCEDURE DocuE_Agregar()
聽 聽LOCAL cArchivo 聽 聽 := ""
聽 聽LOCAL cDescripcion := Space( 80 )
聽 聽LOCAL nNumDocu

聽 聽cArchivo := cGetFile( "Archivo | *.*", "Seleccione archivo a adjuntar ", 1, GetFolderMyDocuments(), XBL_OPENFILE, XBL_WITHLONGNAME )

聽 聽IF !Empty( cArchivo )
聽 聽 聽 IF MsgGet( "Agregar un archivo", "Descripci贸n de archivo", @cDescripcion, "@!", "BM_DOCUMENT" )
聽 聽 聽 聽 聽IF !Empty( cDescripcion )
聽 聽 聽 聽 聽 聽 KSetErrorRT( TRUE )
聽 聽 聽 聽 聽 聽 TRY
聽 聽 聽 聽 聽 聽 聽 聽KBegin()
聽 聽 聽 聽 聽 聽 聽 聽nNumDocu := KIncCont( "CONTROL", "CONT_DOCU" )
聽 聽 聽 聽 聽 聽 聽 聽IF nNumDocu > 0
聽 聽 聽 聽 聽 聽 聽 聽 聽 KInsert( "EMPLEADOS_DOCU", { { "NUM_EMPL" 聽 , nNumEmpl 聽 聽 }, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽{ "NUM_DOCU" 聽 , nNumDocu 聽 聽 }, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽{ "TIPO" 聽 聽 聽 , "D" 聽 聽 聽 聽 聽}, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽{ "FECHA" 聽 聽 聽, Date() 聽 聽 聽 }, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽{ "DESCRIPCION", cDescripcion } } )

聽 聽 聽 聽 聽 聽 聽 聽 聽 KInsert( "DOCUMENTOS" 聽 聽, { { "NUM_DOCU" 聽 , nNumDocu 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 }, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽{ "NOMBRE" 聽 聽 , cFileNoPath( cArchivo ) 聽 聽 聽 聽 聽 聽}, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽{ "ARCHIVO" 聽 聽, HB_StrToHex( FileStr( cArchivo ) ) } } )
聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽KCommit()
聽 聽 聽 聽 聽 聽 聽 聽KReQuery( aKInfoD )
聽 聽 聽 聽 聽 聽 CATCH oError
聽 聽 聽 聽 聽 聽 聽 聽KRollback()
聽 聽 聽 聽 聽 聽 聽 聽ShowError( oError )
聽 聽 聽 聽 聽 聽 END
聽 聽 聽 聽 聽 聽 KSetErrorRT( FALSE )
聽 聽 聽 聽 聽ENDIF
聽 聽 聽 ENDIF
聽 聽ENDIF

聽 聽oBrwD:Refresh()

RETURN

/*-------------------------------------------------------------------------------------------------*/
/*Ok*/
PROCEDURE DocuE_Borrar()
聽 聽LOCAL lBorrar 聽:= TRUE
聽 聽LOCAL nNumDocu := 0

聽 聽IF EMPL_DOC->( Eof() )
聽 聽 聽 MsgAlert( "No hay documentos que borrar.", "Alerta" )
聽 聽 聽 RETURN
聽 聽ELSE
聽 聽 聽 IF MsgNoYes( "Desea borrar documento seleccionado?", "Seleccionar" )
聽 聽 聽 聽 聽nNumDocu := EMPL_DOC->NUM_DOCU
聽 聽 聽 聽 聽KSetErrorRT( TRUE 聽)
聽 聽 聽 聽 聽TRY
聽 聽 聽 聽 聽 聽 KBegin()
聽 聽 聽 聽 聽 聽 KExecute( "DELETE FROM EMPLEADOS_DOCU WHERE NUM_DOCU=%1", { nNumDocu } )
聽 聽 聽 聽 聽 聽 KExecute( "DELETE FROM DOCUMENTOS 聽 聽 WHERE NUM_DOCU=%1", { nNumDocu } )
聽 聽 聽 聽 聽 聽 KCommit()
聽 聽 聽 聽 聽 聽 KReQuery( aKInfoD )
聽 聽 聽 聽 聽CATCH oError
聽 聽 聽 聽 聽 聽 KRollback()
聽 聽 聽 聽 聽 聽 ShowError( oError )
聽 聽 聽 聽 聽END
聽 聽 聽 聽 聽KSetErrorRT( FALSE )
聽 聽 聽 ENDIF
聽 聽ENDIF

聽 聽oBrwD:Refresh()

RETURN

/*-------------------------------------------------------------------------------------------------*/
/*Ok*/
PROCEDURE DocuE_Visualizar()

聽 聽IF EMPL_DOC->( Eof() )
聽 聽 聽 MsgAlert( "No hay documentos para visualizar.", "Alerta" )
聽 聽 聽 RETURN
聽 聽ENDIF

聽 聽VisorDocumentos( EMPL_DOC->NUM_DOCU )

RETURN

/*-------------------------------------------------------------------------------------------------*/
/*EOF*/
/*-------------------------------------------------------------------------------------------------*/
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: ayuda construccion de xharbour desde svn
Posted: Wed Feb 04, 2015 04:40 PM
Carlos,

si se pudiera mejorar SQLMIX (vaya si lo he intentado, he revisado el c贸digo pero mi nivel de c no llega a tanto


Que parte es la que necesitas mejorar ?

Si me muestras el c贸digo y me indicas los cambios que necesitas hacer, igual puedo ayudarte :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: ayuda construccion de xharbour desde svn
Posted: Wed Feb 04, 2015 05:25 PM

ok, revisare y te contacto cuando tenga reunida la info.

mil gracias antonio.

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)

Continue the discussion