Scripting ...

Postby Antonio Linares » Fri Nov 02, 2007 9: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
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby nageswaragunupudi » Fri Nov 02, 2007 10:38 am

In xharbour ,

we can do :
Code: Select all  Expand view
__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
User avatar
nageswaragunupudi
 
Posts: 10643
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Postby Antonio Linares » Fri Nov 02, 2007 10:42 am

NageswaraRao,

Better rename cSource as cHRBFileName to avoid confusions, thanks
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby nageswaragunupudi » Fri Nov 02, 2007 11:03 am

Yes thanks. I forgot to unload the pointer.

Code: Select all  Expand view
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
User avatar
nageswaragunupudi
 
Posts: 10643
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Postby Rimantas » Fri Nov 02, 2007 4: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.
User avatar
Rimantas
 
Posts: 437
Joined: Fri Oct 07, 2005 12:56 pm
Location: Utena , Lithuania

Postby Rimantas » Fri Nov 02, 2007 4:51 pm

nageswaragunupudi wrote:Yes thanks. I forgot to unload the pointer.

Code: Select all  Expand view
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 :

Code: Select all  Expand view
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.
User avatar
Rimantas
 
Posts: 437
Joined: Fri Oct 07, 2005 12:56 pm
Location: Utena , Lithuania

Postby Antonio Linares » Fri Nov 02, 2007 5: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
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Antonio Linares » Fri Nov 02, 2007 5:27 pm

Rimantas,

Please try the test I posted
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Rimantas » Fri Nov 02, 2007 6: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.
User avatar
Rimantas
 
Posts: 437
Joined: Fri Oct 07, 2005 12:56 pm
Location: Utena , Lithuania

Postby James Bott » Fri Nov 02, 2007 8: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
User avatar
James Bott
 
Posts: 4840
Joined: Fri Nov 18, 2005 4:52 pm
Location: San Diego, California, USA

Postby Antonio Linares » 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
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby nageswaragunupudi » Sat Nov 03, 2007 1:28 pm

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

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10643
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Postby Antonio Linares » Sat Nov 03, 2007 1:38 pm

afaik, it is not implemented in xharbour :-(
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby nageswaragunupudi » Sat Nov 03, 2007 3:36 pm

Sad. Missing a really powerful and very useful function.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10643
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Scripting ...

Postby jair » Mon Jul 01, 2024 4: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?
jair
 
Posts: 57
Joined: Sun Aug 27, 2017 7:18 pm

PreviousNext

Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 71 guests