Hola
He comenzado a pasar una de mis aplicaciones a 32 bits, para ello estoy usando Harbour (45.0), FWH 2.7 build de marzo, bcc 5.5.1 y VERCE 4.3 .
Me encuentro en un problema por el que casi todos han pasado, y ya lo han resuleto, pero yo no puedo. Anteriormente declaraba en un PRG (generalmente del menú) como PUBLIC las variables que usaría en muchas funciones que se encontraban en diversos PRGs, hasta incluso alguna las declaraba en donde la necesitaba, y todo funcionaba bien. Pero hoy eso ya no funciona (creo que me toca ser más ordenado). Revisando el foro, encontré qe se debe cambiar public por memvar, hize todos _ y funcionó pero sólo dentro del primer prg . Al seguir la compilación del siguiente prg cuyas funciones usan las variables públicas declaradas ya en el primer prg como memvar, estas no son reconocidas y se obtiene nuevamente el famoso Warning:
Ambiguos Reference:'variable'
De qué otra forma se puede solucionar esto, para que las variables se declaren una sola vez en el prg inicial y estén disponibles para todos los prgs de la aplicación.
Les recuerdo que ya he declarado las variables como memvar en el prg principal, pero no funciona.
Gracias de antemano cualquier ayuda.
Marcelo Jingo
variables públicas y memvar
- Manuel Valdenebro
- Posts: 706
- Joined: Thu Oct 06, 2005 9:57 pm
- Location: Málaga-España
Marcelo,
Te cuento como lo hago yo:
1) En el prg principal, declaro por este orden las variables:
locales, static, Memvar, Field, Public. private
Todas las variables PUBLIC las declaro en este módulo tambien como MEMVAR.
2) En los otros módulo, en el caso de que vaya a utilizar en él alguna
variable pública, ya declarada en el prg principal, las declaro aqui PERO SOLO COMO MEMVAR.
Espero que te sirva.
Te cuento como lo hago yo:
1) En el prg principal, declaro por este orden las variables:
locales, static, Memvar, Field, Public. private
Todas las variables PUBLIC las declaro en este módulo tambien como MEMVAR.
2) En los otros módulo, en el caso de que vaya a utilizar en él alguna
variable pública, ya declarada en el prg principal, las declaro aqui PERO SOLO COMO MEMVAR.
Espero que te sirva.
Un saludo
Manuel
Manuel
Algunos sugieren lo siguiente:sjingo wrote:Gracias Manuel por la respuesta.
Es como si empezara de nuevo, estoy un poco despistado.
Se me volvió pesado este cambio, pues tengo varios prgs y un montón de variables públicas.
Seguiré tu consejo y ya les contaré cómo me fue.
Saludos a todos
Code: Select all
MEMVAR oGlobal
FUNCTION main()
PUBLIC oGlobal
oGlobal := myClass()
RETURN NIL
CLASS myClass
DATA dFecha
DATA cHora
DATA cTitulo
DATA oWnd
ENDCLASS
Code: Select all
MEMVAR oGlobal
FUNCTION otrafuncion()
? oGlobal:cHora
RETURN NIL
Espero haber ayudado
William, Morales
Saludos
méxico.sureste
Saludos
méxico.sureste