Page 1 of 1

COMPILANDO - UNA CURIOSIDAD

Posted: Tue Aug 21, 2018 4:48 pm
by SALINETAS24
Hola,
Tengo un fichero ".HBP" con una serie de PRG que forman parte de la aplicación.

CONMENU.PRG
CONMAAS.PRG
CONMACO.PRG
CONMACU.PRG
CONMAEM.PRG
CONLIAS.PRG
CONLIEX.PRG
CONBASS.PRG
CONACSA.PRG

Tengo un fichero ".HBC" con estos datos

incpaths=
libpaths=
libs=
gt=
mt=no
instpaths=


Y he realizado una serie de modificaciones sobre la clase REPORT.PRG la cual la tengo en el directorio de origen \HMG.3.4.4\SOURCE\REPORT.

Hasta hay todo correcto, pero el otro dia vi que compañeros incluian estas lineas en sus programas

#include "hmg.ch"
#include "I_REPORT.CH"
#include "H_REPORT.PRG"
#include "_dbf.ch"

Lo que me daba a entender que yo podía incorporar mi clase REPORT modificada en el programa desde mi directoria de trabajo, sin tener que modificar la original y de esta forma tener siempre una copia sin necesidad de estropear.
Lo he probado y efectivamente funciona, pero me ocurre una cosa.

1/ Lo incorporo solo en el 3er. PRG de la lista del fichero ".HBP", concretamente "CONMACO.PRG" y me lo asume el resto de la aplicación. Todos los programas asumen la clase DO REPORT modificada, sin necesidad de ponerles el include en los otros ".PRG" ... ¿Eso es así...?
2/Hice lo mismo, pero en esta caso de el 1er. PROGRAMA, y en este caso me da un error en tiempo real.
Se me muestra una ventana que dice:
PROGRAM ERROR
ERROR BASE/1108 argument error: HB_UAT
Called from HB_UAT(0)
Called From EASYREPORT(169)

y la linea en cuestion es esta .
ctitle1:=HMG_LOWER(HB_USUBSTR(ctitle,HB_UAT('|',ctitle)+1))+'...'

¿Porque me da error en el 1er PRG de la lista, que casualmente es el 1er. PRG que se compila..?
¿Tiene que ver en algo el orden...?
Y porque si lo pongo los INCLUDE solo en un PRG (en CONMACO.PRG), me lo asumen el resto de PRG ..?

Es normal..?

Muchas gracias a todos..

Re: COMPILANDO - UNA CURIOSIDAD

Posted: Tue Aug 21, 2018 7:53 pm
by andyglezl
Si tu revisas \HMG\3.4.4\INCLUDE\hmg.ch, hace un #include "minigui.ch".
Y si revisas minigui.ch, hace un #include de todos los archivos que necesita de \HMG\3.4.4\INCLUDE\
incluyendo "i_report.ch" por lo tanto ya no tienes que hacerlo tu.

Si modificaste "i_report.ch" y "H_REPORT.PRG", cambiales de nombre e incluyelos en tu prg.

#include "hmg.ch"
#include "MI_I_REPORT.CH"
#include "MI_H_REPORT.PRG"

Re: COMPILANDO - UNA CURIOSIDAD

Posted: Wed Aug 22, 2018 9:33 am
by mustafa
Hola amigo José Manuel (Salinetas24)
Personalmente trabajo de la siguiente manera:
el el 1º Prg que llamaremos Main.prg
pongo todos los Prg y Ch que voy ha utilizar
ejemplo:

#include "hmg.ch"
#include "hmg_BoxLetterShow.ch"
#include "Apoyo_1.prg"
#include "Calcul_Nif.prg"
#include "Factur.Prg"

Function Main

......... etc etc.

seria lo mismo que poner:

#include "hmg.ch"
#include "hmg_BoxLetterShow.ch"

SET PROCEDURE TO "Apoyo_1.prg"
SET PROCEDURE TO "Calcul_Nif.prg"
SET PROCEDURE TO "Factur.Prg"

y tengo un fichero bat que se llama build.344.bat para compilar
y coloco el nombre del 1º Prg que en mi caso se llama Main.prg

y dentro del fichero bat pongo :

@ECHO OFF
call c:\hmg.3.4.4\build.bat main %*

Saludos amigos
Mustafa

Re: COMPILANDO - UNA CURIOSIDAD

Posted: Thu Aug 23, 2018 3:38 pm
by SALINETAS24
Hola amigos y gracias por contestar. :D
Igual no me he explicado bien.
Yo no tengo problemas con la compilación. Pero como digo he visto programadores que modifican una clase de HMG y posteriormente la ponen en su PRG como yo indico. Yo lo he hecho y en principio funciona, pero de una forma muy rara. Si lo Incluyo en el "Main" me da el error que puse en mi anterior mensaje, pero sin embargo si pongo el include en otro ".PRG" en mi caso en "CONMACO.PRG" no pasa nada y me lo asume. Lo gracioso es que en el resto de los ".PRG" también me asumen la nueva clase sin necesidad de nombrarla, sin necesidad de hacerles el include..., ni de ponerla.¿?¿? :?:
Y lo mejor de todo, al que le he visto hacer eso es a ti amigo Jordi.., jajaja :lol:
Mirate es enlace Mustafa, el otro día revisando lo vi y me llamo la atención. No me había fijado. Lo probé y funciona, bueno .., a mi me funciona con las salvedades que digo.

http://www.hmgforum.com/viewtopic.php?f=24&t=5684

verás que hay un ".ZIP" tuyo, algo como REPORT_SELECTIVO, que realiza unas mejoras sobre la Clase REPORT que yo habia modificado (por cierto ahora la tengo mucho mejor), colgare un prg_ejemplo en el otro LINK que tenemos entre los tres, el de LASTKEY.., jajaja

No se.., simplemente digo que el comportamiento del compilador en este caso es raro.. :shock:

Venga., unas cervezas frequitas :P

Re: COMPILANDO - UNA CURIOSIDAD

Posted: Fri Aug 24, 2018 10:29 am
by mustafa
Hola Nanu
Como te dije
el el primero pongo todos los Prg y Ch que voy ha utiliza
mediante #include
1º Prg
#include "hmg.ch"
#include "hmg_BoxLetterShow.ch"
#include "Apoyo_1.prg"
#include "Calcul_Nif.prg"
etc.etc.
y en cada Prg solo #include "hmg.ch"

2º Apoyo_1.prg contenido
#include "hmg.ch"
*------------------------------------------------------------*
Function Apoyox_1()
*------------------------------------------------------------*
etc...etc..

3º Calcul_Nif.prg contenido

#include "hmg.ch"
*---------------------------------------------------------*
Function Calcul_Nif()
*---------------------------------------------------------*
etc. etc.

Pongo el primer PRG en el fichero build.344.bat
et voilà se fabricó el Main.Exe

Como dice Salinetas24

"es que en el resto de los ".PRG" también me asumen la nueva clase sin necesidad de nombrarla"
No tengo idea, pero ami me funciona

Saludos
Mustafa :P ;)

Re: COMPILANDO - UNA CURIOSIDAD

Posted: Fri Aug 24, 2018 5:06 pm
by SALINETAS24
Jajajaja gracies amic.
Seguire inventigando..

Re: COMPILANDO - UNA CURIOSIDAD

Posted: Mon Aug 27, 2018 9:30 pm
by SALINETAS24
Ya lo tengo.

Como yo para compilar utilizo el fichero ".hbp" donde pongo todos los ".prg" que lleva la aplicación, entonces en el 1er ".PRG" en mi caso "CONMENU.PRG" pongo

#include "hmg.ch"
#include "I_REPORT.CH"

Por raro que parezca el include "I_REPORT.CH" no lo pongo en ningun ".PRG" más y me asume el nuevo.

y en el ".hbp" pongo
CONMENU.PRG
CONMAAS.PRG
CONMACO.PRG
CONMACU.PRG
CONMAEM.PRG
CONLIAS.PRG
CONLIEX.PRG
CONBASS.PRG
CONACSA.PRG
"H_REPORT.CH" <--- Esta linea

Y me asume la nueva clase en todos los ".PRG"

Mola