Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
[SOLUCIONADO] ¿Cómo Declarar Una Matriz Con Datos Remanentes?
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje [SOLUCIONADO] ¿Cómo Declarar Una Matriz Con Datos Remanentes? 
 
Necesito crear una matriz en un módulo no principal cuyos datos no tenga que volver a cargar cada vez que llamo a una función de ese módulo. Además, esos datos los usan casi todas las funciones de ese módulo, pero no deben ser accesibles desde otras clases módulos o formularios.

A ver si me estoy explicando, que tiendo a la farragosidad:

Código: [Descargar] [Ocultar] [Seleccionar]
'' Declaración en cabecera de módulo MCalendarios

Static Private Calendarios_Par[15, 9] As Integer

...


' Se cargan variables con este módulo que se llama desde _new() de FMain como MCalendarios.Carga_Valores()
Public Function Carga_Valores

...

Calendarios_Par[5, 4]=5436

...

End
 


Pero lo primero que me dice el IDE es que se sorprende de ver ahí Static

He estado buscando en
https://foro.gambas-es.org/viewtopic.php?f=1&t=2169&start=10
https://foro.gambas-es.org/viewtopi...ighlight=static
https://foro.gambas-es.org/viewtopi...ighlight=static
Y en alguna más por ahí suelta —y en la wiki de gambas3— pero no termino de entenderlo.

Muchas gracias de antemano.
 



 
última edición por Grandamakulo el Sabado, 24 Diciembre 2016, 14:11; editado 1 vez 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Cómo Declarar Una Matriz Con Datos Remanentes? 
 
Grandamakulo:

Ahora no puedo ver el error que te da el IDE, pero me suena a que "STATIC" te sobra porque:
1) Tu estas usando un módulo, y no una clase.
Lo que comentaba  fabianfv  en su día:
Citar:
lo que hace Static es que ese método pertenezca a la clase en lugar de pertenecer a un objeto (instancia) de esa clase. Es decir que todos los objetos de esa clase compartirán el mismo método Main..(en en tu caso usen la misma variable).


Citar:
, pero no deben ser accesibles desde otras clases módulos o formularios.

Como la has definido como PRIVATE, eso ya lo tienes.

Yo creo que con solo:
Citar:
Private Calendarios_Par[15, 9] As Integer

Obtienes lo que quieres.
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Cómo Declarar Una Matriz Con Datos Remanentes? 
 
Gracias, jsbsan.
El problema es que no me quedan remanentes los valores. Es decir, que tengo que cargar los valores de la matriz cada vez que llamo a una función de ese módulo.
Veré si es que estoy haciendo algo mal que no tenga que ver con las declaraciones.
 



 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Cómo Declarar Una Matriz Con Datos Remanentes? 
 
esta mal la declaracion
Código: [Descargar] [Ocultar] [Seleccionar]
Private CalendariosPar as new integer[15,9]


Sub Main()

    CalendarioPar[2,2] = 12345

end sub


Sub Test()

    Debug CalendarioPar[2,2]  ' esto escribe 12345 en la consola

End sub
 

 



 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Cómo Declarar Una Matriz Con Datos Remanentes? 
 
Lo que dice TercoIde es correcto, hay que instanciarla.

O la haces en la declaración, como ha hecho él:
Código: [Descargar] [Ocultar] [Seleccionar]
Private CalendariosPar as new integer[15,9]


O lo haces en algún momento antes de asignarles valores, en alguna subrutina:
Citar:
....
CalendariosPar=new integer[15,9]
....


Nota:
Para tu caso, solo la debes de instanciar una vez, ya que si vuelves a hacer, se limpian los valores.
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Cómo Declarar Una Matriz Con Datos Remanentes? 
 
¡¡Gracias a ambos!!
Solucionado, vuestras dos propuestas son válidas para lo que quería hacer. —Seguro que hay alguna diferencia entre ambas, pero yo no soy capaz de saber cuál, el caso es que funcionan las dos.—
El error era mío y tenía que ver con que copié mi propio código desde Geany con el ordenador del trabajo y no con la declaración de variables...
 



 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Cadena A Matriz [SOLUCIONADO] skhaliburg General 3 Sabado, 25 Septiembre 2010, 19:06 Ver último mensaje
jsbsan
No hay nuevos mensajes Matriz, Array, Structure?¿?¿? No Sé Lo ... razaAztk General 9 Lunes, 14 Marzo 2011, 09:33 Ver último mensaje
shordi
No hay nuevos mensajes Ordenar Una Matriz De Dos Dimensiones [SOL... shordi General 5 Miercoles, 03 Abril 2013, 19:41 Ver último mensaje
shordi
No hay nuevos mensajes [SOLUCIONADO] ¿Cómo Crear Una InstalaciÃ... Grandamakulo General 10 Sabado, 12 Noviembre 2016, 20:29 Ver último mensaje
shordi
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron