FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Definiciones de VARIABLES PUBLICAS en FWH 7.12
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Definiciones de VARIABLES PUBLICAS en FWH 7.12
Posted: Thu Jun 26, 2008 06:00 AM

Disculpen el tema, pero en la version FWH 7.0 usaba MEMVAR para definicion de varibales en cada uno de mis archivs .PRG, luego dentro de mis funcion MAIN y demas, usaba primero las variables LOCAL y luego las PUBLIC, ahora estoy usando la version 7.12 y no me acepto MEMVAR, las cambie por STATIC, luego puse como siempre LCAL y luego PUBLIC, pero las PUBLIC no las puedo leer en otras funciones de otros archivos .PRG. me podrian dar un REPASO con estas definciones de variables, de verdad me perdi...Gracias, a uno tambien le toca... :shock:

Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Definiciones de VARIABLES PUBLICAS en FWH 7.12
Posted: Thu Jun 26, 2008 07:28 AM
Jose Luis,

MEMVAR no declara una variable, sino que le especifica al compilador que determinados s铆mbolos son variables de memoria (declarados en alguna parte) y que no son "campos".

En principio tu c贸digo deberia seguir compilando correctamente, salvo que haya un error en el compilador.

De la documentaci贸n de Clipper:
MEMVAR is a declaration statement that causes the compiler to resolve
references to variables specified without an explicit alias by
implicitly assuming the memory variable alias (MEMVAR->). Only
explicit, unaliased references to the specified variables are affected.
MEMVAR, like all declaration statements, has no effect on references
made within macro expressions or variables.

The MEMVAR statement neither creates the variables nor verifies their
existence
. Its primary effect is to ensure correct references to
variables whose existence is known to be guaranteed at runtime. At
runtime, the specified variables must be created using the PRIVATE,
PARAMETERS or PUBLIC statements. This can occur in the procedure
containing the MEMVAR declaration or in a higher-level procedure.
Attempting to access the variables before they are created will cause an error.

The scope of the MEMVAR declaration is the procedure or function in
which it occurs, or the entire source file if it precedes any PROCEDURE
or FUNCTION statements and the /N compiler option is used. The /N
option suppresses automatic definition of a procedure with the same name
as the program (.prg) file.

Like other declaration statements, MEMVAR must precede any executable statements including PARAMETERS, PUBLIC, and PRIVATE statements in a procedure or function definition; or the program (.prg) file if the declaration has filewide scope.

MEMVAR can be used in conjunction with the /W compiler option--which
generates warning messages for ambiguous variable references--to perform compile-time checking for undeclared variables.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 86
Joined: Sat Jun 24, 2006 04:27 PM
Definiciones de VARIABLES PUBLICAS en FWH 7.12
Posted: Sat Jul 05, 2008 02:37 PM
Buen d铆a para todos...

En Castellano

MEMVAR
Declara nombres de variables privadas y p煤blicas
------------------------------------------------------------------------------
Sintaxis

     MEMVAR <lista idVarmem>

Argumentos

     <lista idVarmem> es la lista de nombres de variables p煤blicas y
     privadas que se van a declarar al compilador.

Descripci贸n

     MEMVAR es una declaraci贸n que hace que el compilador resuelva las
     referencias a variables especificadas sin un alias expl铆cito, asumiendo
     impl铆citamente un alias de variable de memoria (MEMVAR->). Esto s贸lo
     afecta a las referencias expl铆citas sin alias de las variables
     especificadas. MEMVAR, como todas las declaraciones, no afecta a las
     referencias realizadas dentro de expresiones de macro o variables de
     macro que las contengan.

     La sentencia MEMVAR no crea variables ni comprueba su existencia. Sirve
     para asegurar que sean correctas las referencias a variables que se
     sabe que existir谩n durante la ejecuci贸n. Durante la ejecuci贸n, las
     variables especificadas deben crearse con sentencias PRIVATE,
     PARAMETERS o PUBLIC, ya sea ocurrir en el procedimiento que contiene
     la declaraci贸n MEMVAR o en un procedimiento de nivel superior. Si se
     intenta acceder a las variables antes de que se hayan creado, se
     produce un error.

     El 谩mbito de la declaraci贸n MEMVAR es el procedimiento o funci贸n en el
     que aparece, o todo el fichero fuente si precede a una sentencia
     PROCEDURE o FUNCTION y se utiliza la opci贸n de compilador /N. La opci贸n
     /N suprime la definici贸n autom谩tica de un procedimiento que tiene el
     mismo nombre que el fichero de programa (.prg).

     Al igual que las restantes declaraciones, MEMVAR debe preceder a todas
     las sentencias ejecutables, incluyendo las sentencias PARAMETERS,
     PUBLIC y PRIVATE de una definici贸n de procedimiento o funci贸n, o debe
     situarse al principio del fichero de programa (.prg) si el 谩mbito de la
     declaraci贸n es todo el m贸dulo.

     MEMVAR puede utilizarse con la opci贸n de compilador /W, que genera
     mensajes de advertencia para referencias ambiguas a variables, lo que
     permite comprobar la existencia de variables no declaradas durante la
     compilaci贸n.

     Si desea m谩s informaci贸n sobre las declaraciones de variables y su
     谩mbito, consulte el apartado Variables del cap铆tulo "Conceptos B谩sicos"
     de la Gu铆a de Programaci贸n y Utilidades.

Ejemplos

        Este ejemplo muestra la relaci贸n que existe entre una variable
        privada y una variable de campo que tienen el mismo nombre. La
        variable privada se declara con la sentencia MEMVAR:

        FUNCTION Ejemplo
           MEMVAR cantidad, direccion
           PRIVATE cantidad := 100
           USE Cliente NEW
           //
           ? cantidad                //Se refiere a la variable
                                     //privada cantidad
           ? Cliente->Cantidad       //Se refiere a la variable de
                                     //campo Cantidad
           //
           RETURN NIL
Saludos,

Antonio Castro
Maracaibo - Venezuela
ant_cas@yahoo.com

Continue the discussion