COMPILANDO - UNA CURIOSIDAD

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
SALINETAS24
Posts: 146
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 1 time
Been thanked: 1 time

COMPILANDO - UNA CURIOSIDAD

Post by SALINETAS24 » Tue Aug 21, 2018 4:48 pm

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

User avatar
andyglezl
Posts: 981
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Has thanked: 20 times
Been thanked: 41 times
Contact:

Post by andyglezl » Tue Aug 21, 2018 7:53 pm

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"
Andrés González López
Desde Guadalajara, Jalisco. México.

User avatar
mustafa
Posts: 677
Joined: Fri Mar 20, 2009 11:38 am
Location: Alicante - Spain
Been thanked: 74 times

Post by mustafa » Wed Aug 22, 2018 9:33 am

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

User avatar
SALINETAS24
Posts: 146
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 1 time
Been thanked: 1 time

Post by SALINETAS24 » Thu Aug 23, 2018 3:38 pm

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

User avatar
mustafa
Posts: 677
Joined: Fri Mar 20, 2009 11:38 am
Location: Alicante - Spain
Been thanked: 74 times

Post by mustafa » Fri Aug 24, 2018 10:29 am

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

User avatar
SALINETAS24
Posts: 146
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 1 time
Been thanked: 1 time

Post by SALINETAS24 » Fri Aug 24, 2018 5:06 pm

Jajajaja gracies amic.
Seguire inventigando..

User avatar
SALINETAS24
Posts: 146
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 1 time
Been thanked: 1 time

Post by SALINETAS24 » Mon Aug 27, 2018 9:30 pm

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

Post Reply