Variables publicas

Foros Néfele 4 Harbour Foros Dudas Variables publicas

Topic Resolution: Resolved
  • Este debate tiene 5 respuestas, 3 mensajes y ha sido actualizado por última vez el 4 años, 1 mes por DanielDaniel. This post has been viewed 767 times
Mostrando 2 respuestas a los debates
  • Autor
    Entradas
    • #1140
      DanielDaniel
      Participante

      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?

       

       

      Loading spinner
    • #1141
      Alfredo SanzAlfredo Sanz
      Superadministrador

      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

      Loading spinner
      • #1146
        DanielDaniel
        Participante

        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í?

        Loading spinner
        • #1148
          Alfredo SanzAlfredo Sanz
          Superadministrador

          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.

          Loading spinner
        • #1150
          DanielDaniel
          Participante

          Exelente, comprendido

          Muchas gracias

          Un saludo

          Loading spinner
    • #1143
      XeviXevi
      Participante

      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.

      Loading spinner
Mostrando 2 respuestas a los debates
  • Debes estar registrado para responder a este debate.

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para «permitir cookies» y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en «Aceptar» estarás dando tu consentimiento a esto.

Cerrar