Ver Mensaje Individual
  #5 (permalink)  
Antiguo 17/08/2005, 15:45
Avatar de Beakdan
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