FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Alternativa a variable PUBLIC
Posts: 607
Joined: Mon Mar 04, 2013 04:32 PM
Alternativa a variable PUBLIC
Posted: Sat Jun 08, 2019 02:00 PM
Hola :

En una aplicacion debo almacenar el directorio raiz de la aplicacion , ya que luego
tengo las bases de datos de cada empresa en "\RAIZ\EMP01".

etc. al final para no usar una cadena fija y que el usuario pueda instalar la aplicacion donde quiera.
He definido una variable publica en el PROCEDURE INIT de la aplicacion.
Code (fw): Select all Collapse
INIT PROCEDURE ObrasInit()
 PUBLIC cDirectApp := "\" + CurDir()
// ...... Mas codigo
RETURN


Es porque tengo que utilizar la variable en otros modulos que no son el principal.
para otras variables las declaraba STATIC en el modulo principal
y para exportarlas definia una funcion

Code (fw): Select all Collapse
STATIC oWnd
STATIC GetoWnd() ; RETURN oWnd


luego en otro .PRG en el modulo a utilizarlas
definia una variable local
Code (fw): Select all Collapse
LOCAL oWnd := GetoWnd()


y esto me funciona con arrays y objetos pero si intento con esta variable de cadena no funciona.

¿Existe alguna alternativa mejor a definir una varialbe PUBLIC ?

Solo tengo una .

Saludos.

Jose.
Fwh 24.07 64 bits + Harbour 64 bits 3.2dev(r2407221137) + MSVC64
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Alternativa a variable PUBLIC
Posted: Sat Jun 08, 2019 03:31 PM
1) This works with string variables also.
2) It is not necessary to store this information as public.
In any module, simply call
Code (fw): Select all Collapse
cFilePath( ExeName() )

to know the exe file path.
Regards



G. N. Rao.

Hyderabad, India
Posts: 607
Joined: Mon Mar 04, 2013 04:32 PM
Re: Alternativa a variable PUBLIC
Posted: Sat Jun 08, 2019 05:06 PM

Thanks Mr. Rao.

Works fine.

Regards.

Jose

Fwh 24.07 64 bits + Harbour 64 bits 3.2dev(r2407221137) + MSVC64
Posts: 2706
Joined: Fri Oct 07, 2005 01:50 PM
Re: Alternativa a variable PUBLIC
Posted: Sat Jun 08, 2019 05:25 PM
brakaman

You can easily use the xBase Set Default .. consider this code .. adding to Rao's suggestion

Code (fw): Select all Collapse
cFilePath ( ExeName ( ) )
SET DEFAULT to ( cFilePath )


Here is how I get the default path or location where the .Exe resides ( rao's suggestion is more elegant )

Code (fw): Select all Collapse
// where .exe started from is default directory //

cFILE  := GetModuleFileName( GetInstance() )
nSTART := RAT( "\", cFILE )
cDEFA  := SUBSTR(cFILE,1,nSTART-1)

SET DEFAULT to ( cDEFA )    // note this command ..


Then from any module in your program you can access this xBase command Set(7) which retrieves the Set Default value ...

Code (fw): Select all Collapse
cFileName := set(7)


Rick Lipkin
Posts: 607
Joined: Mon Mar 04, 2013 04:32 PM
Re: Alternativa a variable PUBLIC
Posted: Sun Jun 09, 2019 08:44 AM

Hi

Other alternative.

Thanks for your suggestion Rick.

Regards

Jose

Enviado desde mi ONE A2003 mediante Tapatalk

Fwh 24.07 64 bits + Harbour 64 bits 3.2dev(r2407221137) + MSVC64

Continue the discussion