FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Scripting ...
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Scripting ...
Posted: Fri Nov 02, 2007 09:40 AM

There are some differences between Harbour and xHarbour.

Harbour hb_compileBuf() is very powerfull as no external Harbour.exe is required. xHarbour should provide it.

Also, as you have seen, __HrbRun() is a little different too. But using it with HRB files from disk, they will behave the same.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Scripting ...
Posted: Fri Nov 02, 2007 10:38 AM
In xharbour ,

we can do :
__HrbRun( <file.hrb> )

// or

cHrb := memoread( "file.hrb" )
pBody := __hrbload( cHrb ) //   __hrbload( "file.hrb" ) also works
                                        //  pBody is pointer variable
__hrbdo ( pBody )

// or we can make a small function
FUNCTION XHRBRUN ( cSource )  // can be file on disk or buffer in memory
RETURN __HrbDo( __HrbLoad( cSource ) ) 

// note: this is from the sourc of ver 99.70
// works with ver 99.71
Regards



G. N. Rao.

Hyderabad, India
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Scripting ...
Posted: Fri Nov 02, 2007 10:42 AM

NageswaraRao,

Better rename cSource as cHRBFileName to avoid confusions, thanks

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Scripting ...
Posted: Fri Nov 02, 2007 11:03 AM
Yes thanks. I forgot to unload the pointer.

FUNCTION xHrbRun( cHRBfileNameOrcHRBCode )

LOCAL pHrb

   __HrbRun( pHrb := __HrbLoad( cHRBfileNameOrcHRBCode ) )
   __HrbUnload( pHrb )

RETURN NIL
// Note: arguments support still to be added

The above function can be used for .hrb file on disk or hrb compiled code in memory ( ideal for storing in database and execute retrieved code )
Regards



G. N. Rao.

Hyderabad, India
Posts: 437
Joined: Fri Oct 07, 2005 12:56 PM
Scripting ...
Posted: Fri Nov 02, 2007 04:25 PM
Antonio Linares wrote:My mistake, you can directly execute it from memory too :-)

__HrbRun( MemoRead( "another.hrb" ) )



Thanks for the samples and explanations , Antonio . I'll tried that . Only one question - can we use FWH syntax in this externals prgs ? That's the "another.prg" can contain DIALOG , BUTTONS , GET in FWH syntax ? Also it's one important - will that suport native class ? I'm using xHarbour Bcc ...

With best regards ! Rimantas
Rimantas U.
Posts: 437
Joined: Fri Oct 07, 2005 12:56 PM
Scripting ...
Posted: Fri Nov 02, 2007 04:51 PM
nageswaragunupudi wrote:Yes thanks. I forgot to unload the pointer.

FUNCTION xHrbRun( cHRBfileNameOrcHRBCode )

LOCAL pHrb

   __HrbRun( pHrb := __HrbLoad( cHRBfileNameOrcHRBCode ) )
   __HrbUnload( pHrb )

RETURN NIL
// Note: arguments support still to be added

The above function can be used for .hrb file on disk or hrb compiled code in memory ( ideal for storing in database and execute retrieved code )



Always get error :

Application
===========
   Path and name: C:\A\AMDI\eng32.exe (32 bits)
   Size: 2,767,360 bytes
   Time from start: 0 hours 0 mins 7 secs 
   Error occurred at: 2007.11.02, 18:43:23
   Error description: Error BASE/9999  Corruption detected: __HRBLOAD
   Args:

Stack Calls
===========
   Called from:  => __HRBRUN(0)
   Called from: ENG32.PRG => XHRBRUN(2190)
   Called from: ENG32.PRG => TAPPLIC:SCRPT(1819)
   Called from: ENG32.PRG => (b)TAPPLIC:BUILDBAR(691)
   Called from: btnbmp.prg => TBTNBMP:CLICK(0)
   Called from: btnbmp.prg => TBTNBMP:LBUTTONUP(0)
   Called from: window.prg => TWINDOW:HANDLEEVENT(0)
   Called from: control.prg => TBTNBMP:HANDLEEVENT(0)
   Called from: window.prg => _FWH(0)
   Called from:  => WINRUN(0)
   Called from: window.prg => TMDIFRAME:ACTIVATE(0)
   Called from: ENG32.PRG => TAPPLIC:ACTIVATE(344)
   Called from: ENG32.PRG => MAIN(109)


What I'm doing bad ?

Regards ! Rimantas
Rimantas U.
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Scripting ...
Posted: Fri Nov 02, 2007 05:21 PM

Rimantas,

>
Only one question - can we use FWH syntax in this externals prgs ? That's the "another.prg" can contain DIALOG , BUTTONS , GET in FWH syntax ? Also it's one important - will that suport native class ? I'm using xHarbour Bcc ...
>

Yes :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Scripting ...
Posted: Fri Nov 02, 2007 05:27 PM

Rimantas,

Please try the test I posted

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 437
Joined: Fri Oct 07, 2005 12:56 PM
Scripting ...
Posted: Fri Nov 02, 2007 06:43 PM
Antonio Linares wrote:Rimantas,

Please try the test I posted


Thanks Antonio ! Your test is working - simply __HbRun() . Also I tried with __HbRun( MemoRead( cFile ) ) - it return the same error "Corupption detected __HbLoad" . It seems that works only HbRun ...

Many thanks Antonio , it seems that you directed me to true way ... :-)

With best regards ! Rimantas
Rimantas U.
Posts: 4840
Joined: Fri Nov 18, 2005 04:52 PM
Scripting ...
Posted: Fri Nov 02, 2007 08:32 PM

__HrbRun( MemoRead( "another.hrb" ) )

I'm confused. What is in an .HRB file? Is it simply FW code? If so, then could we just read a PRG? Any PRG?

__HrbRun( MemoRead( "another.prg" ) )

James

FWH 18.05/xHarbour 1.2.3/BCC7/Windows 10
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Scripting ...
Posted: Fri Nov 02, 2007 10:26 PM

James,

> What is in an .HRB file?

HRB is a binary file (not ascii) that contains some specific Harbour information (pcode, symbols table).

Its called "Harbour portable file" as theoretically could be executed on any operating system, as it does not include any operating system related info.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Scripting ...
Posted: Sat Nov 03, 2007 01:28 PM

Does any one know the equivalent of Harbour's hb_compileBuf() in xHarbour please?

Regards



G. N. Rao.

Hyderabad, India
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Scripting ...
Posted: Sat Nov 03, 2007 01:38 PM

afaik, it is not implemented in xharbour :-(

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Scripting ...
Posted: Sat Nov 03, 2007 03:36 PM

Sad. Missing a really powerful and very useful function.

Regards



G. N. Rao.

Hyderabad, India
Posts: 74
Joined: Sun Aug 27, 2017 07:18 PM
Re: Scripting ...
Posted: Mon Jul 01, 2024 04:31 PM

cFilePrg := "myprg.prg"

__Run( "harbour "+cFilePrg+" -i -gh -m -n -b " )

Estoy probando generar la compilación hrb para poder compilar un archivo hrb ahora para ejecutar este archivo como si fuera un archivo ejecutable de otro archivo ejecutable. ¿Alguien sabe o tiene alguna idea?