Sandro Bizioli


Chi sogna di giorno conosce molte cose che sfuggono a chi sogna soltanto di notte. (E.A.Poe)
Mappa

Recuperare il numero di elementi contenuti in un array. (getArrayDim)

Dato un ipotetico array, sia esso di valori o di controlli, la funzione restituisce il numero di elementi che lo compongono.
La funzione restituirà -1 qualora l'elemento passato non fosse un array

Aggiornamento
La funzione getArrayDim era già stata trattata nel post "Verificare se un array è nothing". Nella versione proposta qui di seguito, è stata aggiunta la possibilità di analizzare anche array di controlli.

Per completezza si consiglia di consultare tale post dove, tra le altre cose, veniva trattata anche l'API SafeArrayGetDim.

Private Function getArrayDim(ByRef mioArray As Variant) As Long
'***********************************************************************************
'Func.: getArrayDim(Creazione SB-13/02/2009; Mod.: 10/04/2009)
'Desc.: Restituisce il numero di elementi contenuti in un Array
'DLL. :
'Par. : mioArray    Variabile da analizzare
'Ret. : Long        Numero di elementi contenuti nell'array
'                   -1: Non si tratta di un Array
'                   0 : Array vuoto, non contenente valori
'***********************************************************************************
Dim Result As Long
Dim x As Integer
On Error Resume Next
    If TypeOf mioArray Is Object  Then
        Result = mioArray.ubound - mioArray.lbound + 1
        If Err.Number <> 0 Then Result = -1
        Err.Clear
    ElseIf Not IsArray(mioArray) Then
        Result = -1
    Else
        Result = UBound(mioArray) - LBound(mioArray) + 1
        If Err.Number <> 0 Then Result = 0
        Err.Clear
    End If
    '
    ' Restituisco il numero di elementi presenti nell'array
    '
    getArrayDim = Result
End Function

Alcuni esempi:

Dim myArray(0 To 2) As Long
dim myArrayEmpty()  As long
Dim myLong As Long

 Debug.Print getArrayDim(myArray)
 ' Restituisce 3
 
 Debug.Print getArrayDim(myArrayEmpty)
 ' Restituisce 0 (nessun elemento presente)
 
    Debug.Print getArrayDim(myLong)
 ' Restituisce -1 (non è un array)
    
    Debug.Print getArrayDim(Command1)
 ' Restituisce -1 se Command1 NON è un array di controlli
 ' Restituisce il numero di controlli che compongono Command1

Categoria: VB6
venerdì, 10 apr 2009 Ore. 16.14
Statistiche
  • Views Home Page: 111.576
  • Views Posts: 568.405
  • Views Gallerie: 117.624
  • n° Posts: 227
  • n° Commenti: 222
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003