Markus W.
April 11th, 2001, 04:41 AM
I pass an multi-dimensional array as variant to a method. The array can have different dimensions.
How can I get the number of dimensions of this multi-dimensional array variable?
Cimperiali
April 11th, 2001, 04:54 AM
This is just an example. You can improve it for your purpouse.
Public Function MArrayServer_fnctTestArrayInVariant(ByVal avntTest As Variant) As Integer
'********************************************************
'Receive variant and test to find out if is array.
'values back:
' 0 = not array/not dimensioned
' 1 = array monodimension
' 2 = array bidimension
' 3 = array tridimension
' 4 = array monodimension with an array monodimension inside
' 5 = array monodimension with array bidimension inside
' 6 = array monodimension with array tridimension inside
' 7 = array bidimension with array monodimension inside
' 8 = array bidimension with array bidimension inside
' 9 = array bidimension with array tridimension inside
'10 = array tridimension with an array monodimension inside
'11 = array tridimension with an array bidimension inside
'12 = array tridimension with array tridimension inside
'********************************************************
'Dim blnSkippa As Boolean
Dim vntPassa As Variant
Dim OkArray As Integer
On Error GoTo ErrHandler
1 vntPassa = avntTest(0)
'if ok, test for inside
2 OkArray = 1
Test4:
10 vntPassa = avntTest(0)(0)
11 MArrayServer_fnctTestArrayInVariant = 4
12 Exit Function
Test5:
13 vntPassa = avntTest(0)(0, 0)
14 MArrayServer_fnctTestArrayInVariant = 5
15 Exit Function
Test6:
16 vntPassa = avntTest(0)(0, 0, 0)
17 MArrayServer_fnctTestArrayInVariant = 6
18 Exit Function
Test2:
4 vntPassa = avntTest(0, 0)
5 OkArray = 2
Test7:
19 vntPassa = avntTest(0, 0)(0)
20 MArrayServer_fnctTestArrayInVariant = 7
21 Exit Function
Test8:
22 vntPassa = avntTest(0, 0)(0, 0)
23 MArrayServer_fnctTestArrayInVariant = 8
24 Exit Function
Test9:
25 vntPassa = avntTest(0, 0)(0, 0, 0)
26 MArrayServer_fnctTestArrayInVariant = 9
27 Exit Function
Test3:
7 vntPassa = avntTest(0, 0, 0)
8 OkArray = 3
Test10:
28 vntPassa = avntTest(0, 0, 0)(0)
29 MArrayServer_fnctTestArrayInVariant = 10
30 Exit Function
Test11:
31 vntPassa = avntTest(0, 0, 0)(0, 0)
32 MArrayServer_fnctTestArrayInVariant = 11
33 Exit Function
Test12:
34 vntPassa = avntTest(0, 0, 0)(0, 0, 0)
35 MArrayServer_fnctTestArrayInVariant = 12
36 Exit Function
Exit_1:
MArrayServer_fnctTestArrayInVariant = OkArray
eXit_fUnction:
Exit Function
ErrHandler:
Select Case Err
Case 9
Select Case Erl
Case 1
Resume Test2
Case 4
Resume Test3
Case 7
MArrayServer_fnctTestArrayInVariant = 0
Case 10
Resume Test5
Case 13
Resume Test6
Case 16
Resume Exit_1
Case 19
Resume Test8
Case 22
Resume Test9
Case 25
Resume Exit_1
Case 28
Resume Test11
Case 31
Resume Test12
Case 34
Resume Exit_1
End Select
Case 13
'test not ok for embedded array non an array...
MArrayServer_fnctTestArrayInVariant = OkArray
Case Else
MsgBox Err & Space(1) & Error$ & " MArrayServer_fnctTestArrayInVariant, riga = " & Erl
End Select
Resume eXit_fUnction
End Function
Special thanks to Lothar "the Great" Haensler. Come back soon, you Guru.