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 esos cambios 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
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
Algunos sugieren lo siguiente:
Code: Select all | Expand
MEMVAR oGlobal
FUNCTION main()
PUBLIC oGlobal
oGlobal := myClass()
RETURN NIL
CLASS myClass
DATA dFecha
DATA cHora
DATA cTitulo
DATA oWnd
ENDCLASS
En los otros PRG's:
Code: Select all | Expand
MEMVAR oGlobal
FUNCTION otrafuncion()
? oGlobal:cHora
RETURN NIL
Solo teniendo una variable pública, esto es para que el consumo de memoria no sea demasiado.
Espero haber ayudado
William, Morales
Saludos
méxico.sureste
Saludos
méxico.sureste