variables públicas y memvar

variables públicas y memvar

Postby sjingo » Sun Apr 30, 2006 6:47 pm

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
User avatar
sjingo
 
Posts: 229
Joined: Sat Mar 18, 2006 3:42 pm
Location: Ibarra-Ecuador

Postby Manuel Valdenebro » Sun Apr 30, 2006 7:21 pm

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.
Un saludo

Manuel
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Postby sjingo » Sun Apr 30, 2006 9:36 pm

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
User avatar
sjingo
 
Posts: 229
Joined: Sat Mar 18, 2006 3:42 pm
Location: Ibarra-Ecuador

Postby wmormar » Mon May 01, 2006 1:55 am

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 view  RUN
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 view  RUN
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
User avatar
wmormar
 
Posts: 1074
Joined: Fri Oct 07, 2005 10:41 pm
Location: México

Postby sjingo » Mon May 01, 2006 3:05 am

Vaya, cada día se aprende más.

Gracias William por el tip, ya mismo lo pongo en práctica.

Estoy ya en el tercer PRG de 15, arreglando esto de las variables.

Un saludo

Marcelo Jingo
User avatar
sjingo
 
Posts: 229
Joined: Sat Mar 18, 2006 3:42 pm
Location: Ibarra-Ecuador


Return to FiveWin para Harbour/xHarbour

Who is online

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