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

Saber Cantidad de columnas que posee una Matriz

Estas en el tema de Saber Cantidad de columnas que posee una Matriz en el foro de Visual Basic clásico en Foros del Web. Cómo puedo yo saber la cantidad de columnas que posee una matriz? Estube probando con UBound(), pero solo me devuelve la cantidad de filas pero ...
  #1 (permalink)  
Antiguo 13/08/2005, 09:44
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Saber Cantidad de columnas que posee una Matriz

Cómo puedo yo saber la cantidad de columnas que posee una matriz?
Estube probando con UBound(), pero solo me devuelve la cantidad de filas pero no de columnas.

La pregunta exacta sería, de que forma puedo hacer que UBound me cuente las columna en vez de las filas?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #2 (permalink)  
Antiguo 17/08/2005, 10:24
 
Fecha de Ingreso: septiembre-2004
Ubicación: Pilar - Cordoba - Argentina
Mensajes: 29
Antigüedad: 19 años, 7 meses
Puntos: 0
Para saber la cantidad de columnas prueba con este ejemplo amigo

Dim Mayor
Dim MiMatriz(1 To 10, 5 To 15, 10 To 20) ' Declara las variables de matriz.
Dim UnaMatriz(10)
Mayor = UBound(MiMatriz, 1) ' Devuelve 10.
Mayor = UBound(MiMatriz, 3) ' Devuelve 20.
Mayor = UBound(UnaMatriz) ' Devuelve 10.
  #3 (permalink)  
Antiguo 17/08/2005, 11:02
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
si recorres la matriz y lepones un contador por cada columna ?
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #4 (permalink)  
Antiguo 17/08/2005, 11:31
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
aldo1982, eso hice para poder seguir con el desarrollo, pero siento curiosidad en saber si VB lo hace.

Sebasedeno, gracias por el ejemplo, lo probaré y les contaré si me dió resultado.

__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #5 (permalink)  
Antiguo 17/08/2005, 15:45
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
RsOfT:
Visual Basic utiliza como Array's una estructura de datos conocida como SafeArray. En esta se especifican el número de dimensiones (o columnas, como tú las llamas), características, longitud de cada elemento... Revisa la documentación del SDK.
El caso es que el primer elemento de la estructura SafeArray contiene el número de dimensiones del array en un integer. Entonces, con la dirección del SafeArray y el método RtlMoveMemory de la API, fácilmente obtendrás este dato y otros en caso de que te sean necesarios.

Código:
Option Explicit

Private Declare Sub RtlMoveMemory Lib "kernel32" ( _
	ByRef Destination As Any, _
	ByRef Source As Any, _
	ByVal Length As Long)
    
Private Declare Function VarPtrArr Lib "msvbvm60.dll" Alias "VarPtr" (ByRef Ptr() As Any) As Long

Dim testArr(0 To 15, -20 To 20, 10, 30, 60) As Long

Private Sub Form_Load()
Dim arrPtr As Long
Dim arrDims As Integer

	RtlMoveMemory arrPtr, ByVal VarPtrArr(testArr()), 4&
	RtlMoveMemory arrDims, ByVal arrPtr, 2&

	Debug.Print "Dimensiones del Array: " & arrDims
End Sub
  #6 (permalink)  
Antiguo 17/08/2005, 21:24
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Gracias por tu ayuda Beakdan, pero llevándome de lo que me dijo Sebasedeno, lo resolví así:
Código:
For i = 0 To UBound(Matriz, UBound(Matriz))
Esto me devuelve exactamente el número que estaba buscando.
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
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 04:07.