Foros Néfele 4 Harbour › Foros › Dudas › Variables publicas
- Este debate tiene 5 respuestas, 3 mensajes y ha sido actualizado por última vez el 4 años, 1 mes por Daniel. This post has been viewed 767 times
-
AutorEntradas
-
-
13-10-2020 a las 03:01 #1140DanielParticipante
Me pasa lo siguiente
En el miapp.prg me defino dos variables MEMVAR aFamilias y aArticulos, luego dentro del Procedure Main() de dicho prg las inicializo como PUBLIC aFamilias := {}, aArticulos := {}.
Luego en el main.prg dentro del "router" tengo esta linea: METHOD AbroTablas() INLINE AbroTablas()
En otro prg tegno definida la función AbroTablas la cual se encarga de rellenar los array aFamilias y aArticulos, utilizando la consola, reviso como "va la cosa" con oCGI:Console(aFamilias[1,2]) (lo cual muestra "Refrescos" y con oCGI:Console(Len(aFamilias)) (lo cual muestra 13), hasta ahí todo bien.
Por último en el MainPage.prg tengo un boton en el que al dar click ejecuto un función que lo primero que hace es oCGI:Console(Str(Len(aFamilias))) y ahí es donde aparece el problema dado que en la consola aparece el número cero. Es como si la definición de las variables públicas no funcionara correctamente.
¿Se pueden utlilizar variables públicas?
-
13-10-2020 a las 10:34 #1141Alfredo SanzSuperadministrador
Ten en cuenta que la programación web utiliza un protocolo "stateless", esto es, cada llamada a una página es indendiente de la anterior, por lo cual no pueden exister variables públicas tal y como las conocemos y tenemos que "hacer magia" para conseguirlas
En néfele esta magia la hacen dos métodos de la clase oCgi
oCgi:SetUserData( cVar, uVal )
Permite guardar una variable y su valor para ser recuperada posteriormente en otra llamada al cgi
oCgi:GetUserData( cVar, uDefaultVal, lCreate )
Recupera una variable previamente guardada
cVar: Nombre de la variable a recuperar
uDefaultVal: Valor por defecto a asignar en caso de que la variable indicada no exista
lCreate: Si la variable no existe, la crea para futuros usos-
13-10-2020 a las 15:32 #1146DanielParticipante
Muchas gracias por tu respuesta.
Aver si voy entendiendo. Si bien nuestro programa estará formado por varios prg, cada uno de ellos tiene sus propias variables y para compartir los valores de las mismas entre unos y otros debemos utilizar los métodos mencionados, dado que los valores de las mismas néfele los guarda en "algún lugar" como para que sean visibles "como si fueran púbicas"; lo que me hace pensar que cada acción del usuario, como por ejemplo pulsar un boton o elejir una opción de un menú, ejecuta nuevamente nuestro cgi.
¿es así?
-
13-10-2020 a las 17:52 #1148Alfredo SanzSuperadministrador
Correcto!
Ten en cuenta que cuanto tú ves el html en el navegador, el cgi ya se ha hecho todo su trabajo e incluso se ha descargado de la memoria del servidor. Así, cuando un usuario está viendo la página web realmente no está consumiendo ningún recurso del servidor. El servidor solo entra en acción cuando construimos la página, con lo cual puedes dar servicio a una gran cantidad de clientes con un servidor con pocos recursos.
Creo que lo he comentado alguna vez: https://samples.nefele.dev es un servidor web con 1Gb de memoria ram.
-
13-10-2020 a las 19:25 #1150DanielParticipante
Exelente, comprendido
Muchas gracias
Un saludo
-
-
-
13-10-2020 a las 11:41 #1143XeviParticipante
PERFECTO!!!
Al no estar documentada, me iba pasando de una página a otra con :aParams...
El poder usar estos métodos, te simplicica y ayuda a hacer la "transición" más a nuestra manera... que igual no es la correcta, pero es la que estamos mas acostumbrados.
Gracias por el trabajo que estais haciendo!!!
La sencillez que transmite Néfele... ¿no tiene límites???
Un Saludo,
Xevi.
-
-
AutorEntradas
- Debes estar registrado para responder a este debate.