vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Variablen/Strings · Sonstiges   |   VB-Versionen: VB5, VB618.03.08
Analyse eines beliebigen Variablentyps

Mit der hier vorgestellten Funktion wird eine beliebige Variable (Übergabe) auf DatenTyp, Dimensionszahl u. FeldArrayIndex geprüft.

Autor:   Norbert GrimmBewertung:  Views:  7.741 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10kein Beispielprojekt 

Mit der hier vorgestellten Funktion CheckArrayDim wird eine beliebige Variable (Übergabe) auf DatenTyp, Dimensionszahl u. FeldArrayIndex geprüft.

Dies ist ein einfache Beispielfunktion, die auf keine API-Funktion zurückgreift.

' Diese Funktion analysiert die in [vWert] übergebene Variable.
'
' vWert         : beliebiger VariablenTyp
'
' Rückgabe
' iTyp          : VariablenTyp
' iDim          : Anzahl der Dimensionen
' iIndex()      : IntegerArray->ReDim in Funktion
'
'                 ArrayFeldIndices
' iIndex(x, 0)  : unterer Index, x.Dimension
' iIndex(x, 1)  : oberer  Index, x.Dimension
'
Function CheckArrayDim(ByVal vWert As Variant, _
  iTyp As Integer, _
  iDim As Integer, _
  iIndex() As Integer) As Long
 
  Dim D       As Integer
  Dim I       As Integer
  Dim U       As Integer
  Dim nErr    As Long
  Dim Ret     As Long
 
  ' iTyp   :
  ' 0      : Empty     ' Variant
  ' 1
  ' 2      : Integer
  ' 3      : Long
  ' 4      : Single
  ' 5      : Double
  ' 8      : String
  ' 11     : Boolean
  ' 12     : Variant
  ' <Array>: +8192     ' vbArray
  ' 8194   : Integer
  ' 8195   : Long      ' 8195 = 3 + 8192
  ' 8196   : Single
  ' 8197   : Double
  ' 8200   : String
  ' 8203   : Boolean
  ' 8204   : Variant
 
  iTyp = VarType(vWert)
  If iTyp >= vbArray Then ' ist Array
    On Error Resume Next
    ' Dimensionen bestimmen
    Do
      D = D + 1
      U = UBound(vWert, D)
      With Err
        If .Number <> 0 Then        ' Err: 9
          nErr = .Number
          .Number = 0
          D = D - 1                 ' sub 1, weil Err
        End If
      End With
    Loop While nErr = 0
    iDim = D
    On Error GoTo Err_CAD
  Else                              ' kein Array
  End If
 
  ' ArrayFeldIndices
  ReDim iIndex(iDim, 1)
  D = 0
  For I = 1 To iDim
    D = D + 1
    iIndex(I, 0) = LBound(vWert, D)     ' unterer Index
    iIndex(I, 1) = UBound(vWert, D)     ' oberer  Index
  Next I
 
  ' Ret =  0 , o.k.
  '     <> 0 , Fehler
 
Exit_CAD:
  CheckArrayDim = Ret
  Exit Function
 
Err_CAD:
  With Err
    Ret = .Number
    .Clear
  End With
  Resume Exit_CAD
End Function

Testaufruf für CheckArrayDim

Function CheckVariable() As Long
  Dim A               As Long
  Dim AA(10)          As Long
  Dim AAA(10, 5)      As Long
  Dim AAAA(10, 5, 2)  As Long
  Dim I               As Integer
  Dim vMsg            As Variant
 
  Dim iTyp            As Integer
  Dim iDim            As Integer
  Dim iIndex()        As Integer
 
  Dim Ret             As Long
 
  ' z.B.:
  Ret = CheckArrayDim(AAA, iTyp, iDim, iIndex)
 
  MsgBox "Ret : " & Ret & vbCr _
    & "Typ : " & iTyp & vbCr _
    & "Dim : " & iDim, vbInformation, "CheckArrayDim" & Space(10)
 
  '         AAA          AA           A
  ' Ret :   0            0            0
  ' Typ :   8195         8195         3
  ' Dim :   2            1            0
 
  vMsg = "unterer -" & Space(2) & "oberer Index:" & vbCr
  For I = 1 To iDim
    vMsg = vMsg & iIndex(I, 0) & Space(15) & iIndex(I, 1) & vbCr
  Next I
 
  MsgBox vMsg, vbInformation, "ArrayFeldIndices"
  ' AAA
  ' unterer - oberer Index:
  ' 0           10
  ' 0           5
End Function



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2019 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.