Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

[SOLUCIONADO] Matrices tridimensionales de diferente tipo

Estas en el tema de Matrices tridimensionales de diferente tipo en el foro de Visual Basic clásico en Foros del Web. Necesito declarar una matriz tridimensional, donde: 1ª dimensión: string 2ª dimesión: integer 3ª dimensión: integer No sé los campos que van a tener, y necesito ...
  #1 (permalink)  
Antiguo 28/05/2013, 05:29
 
Fecha de Ingreso: abril-2007
Mensajes: 99
Antigüedad: 17 años, 6 meses
Puntos: 0
Matrices tridimensionales de diferente tipo

Necesito declarar una matriz tridimensional, donde:
1ª dimensión: string
2ª dimesión: integer
3ª dimensión: integer

No sé los campos que van a tener, y necesito que sea una variable pública. He estado mirando la documentación de VB6 con respecto a las matrices pero no he encontrado como se pueden declarar matrices con dimensiones de diferente tipo.
  #2 (permalink)  
Antiguo 28/05/2013, 09:25
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 18 años, 3 meses
Puntos: 29
Respuesta: Matrices tridimensionales de diferente tipo

Quizas puedas usar type:

Al comienzo del form:
Código vb:
Ver original
  1. Private Type VARIABLE
  2.     cadena As String
  3.     entero1 As Integer
  4.     entero2 As Integer
  5.   End Type
  6.  
  7.   Public matriz1(200) As VARIABLE

De este modo tienes una matriz unidimensional con 3 valores en cada elemento

Código vb:
Ver original
  1. Dim f As Integer
  2.   For f = 0 To 200
  3.     matriz1(f).cadena = "xxx"
  4.     matriz1(f).entero1 = 111
  5.     matriz1(f).entero2 = 222
  6.   Next f

Suerte

PD: lo edito porque lo que quieres publico es la matriz y lo habia hecho con la variable.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Última edición por pkj; 28/05/2013 a las 09:53
  #3 (permalink)  
Antiguo 28/05/2013, 11:19
 
Fecha de Ingreso: abril-2007
Mensajes: 99
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Matrices tridimensionales de diferente tipo

Exacto, no conocía type! Me viene de perlas para hacer el código más clarificador

La otra duda es si puede haber matrices infinitas, de manera que las vaya rellenando hasta donde haga falta y poder recogerlas con Ubound.
Hasta ahora lo estoy haciendo bastante chapucero. Declaro una matriz bastante más grande de lo que me hace falta, la recorro y le asignó todos los valores "empty" por ej., y luego la recorro manualmente hasta que encuentre empty.

Por ej, la relleno así:
Dim Matriz(1 to 2000, 1 to 2000) as string
For i=1 to 2000
For j=1 to 2000
Matriz(i,j)="empty"
j=j+1
Next j
i=i+1
Next i

Luego le introduzco valores en la matriz hasta donde sea necesario, y para recorrerla uso:
i=1
j=1
Do while Matriz(i,j)<>"empty"
Do while Matriz(i,j)<>"empty"
'Instrucciones
j=j+1
Loop
i=i+1
Loop

Perdón por el código pero estoy estoy escribiendo desde el móvil sin tabulaciones, etc.

Pienso que debe haber alguna forma para crear una matriz infinita de (n,n) y rellenar sus elementos hasta donde lleguen, y luego poder recorrerla con un for con el valor que te devuelva ubound.

El porque de usar esta matriz, es para almacenar un archivo de texto en una matriz, donde la primera dimensión indica la página y la segunda la línea. Como una página puede tener más líneas que otras no puedo leerla y establecer una matriz fija usando redim pues siempre quedarán posiciones vacías.

No se si estoy diciendo barbaridades jeje, nunca he estudiado programacion. Sólo intentó leer mucho y aprender por mero hobby.

Saludos
  #4 (permalink)  
Antiguo 28/05/2013, 13:58
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 15 años
Puntos: 53
Respuesta: Matrices tridimensionales de diferente tipo

Para lo que quieres deberías leer acerca de ReDim Preserve

Siguiendo con el ejemplo anterior

Código vb:
Ver original
  1. Option Explicit
  2. Private Type VARIABLE
  3.     cadena As String
  4.     entero1 As Integer
  5.     entero2 As Integer
  6. End Type
  7.  
  8. Dim matriz1() As VARIABLE
  9.  
  10. Private Sub Form_Load()
  11.   ReDim matriz1(200) As VARIABLE
  12.   Dim f As Integer
  13.   For f = 0 To 200
  14.     matriz1(f).cadena = "xxx"
  15.     matriz1(f).entero1 = 111
  16.     matriz1(f).entero2 = 222
  17.   Next f
  18.   ReDim Preserve matriz1(400) As VARIABLE
  19.   For f = 201 To 400
  20.     matriz1(f).cadena = "yyy"
  21.     matriz1(f).entero1 = 333
  22.     matriz1(f).entero2 = 444
  23.   Next f
  24.   MsgBox UBound(matriz1)
  25. End Sub
Antes de Añadir elementos a la Matriz, debes ver si Ubound esta ocupado y si es así con el ReDim Preserve añadirle los elementos que necesites.
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #5 (permalink)  
Antiguo 06/06/2013, 08:24
 
Fecha de Ingreso: abril-2007
Mensajes: 99
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Matrices tridimensionales de diferente tipo

Gracias. Tus ejemplos me han válido mucho y ya tengo esa parte del prpgrma a acabada.

Etiquetas: diferente, matrices, tipo, vb6
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:53.