Wiki der Access Code Library

Gemeinsam zu mehr Effizienz in der Anwendungserstellung

Prüfen ob Array initialisiert ist

Aus Access Code Library
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
K
K
 
(Der Versionsvergleich bezieht 6 dazwischenliegende Versionen mit ein.)
Zeile 1: Zeile 1:
[[Kategorie:Code-Schnipsel]]
[[Kategorie:Code-Schnipsel]]
-
Mit IsArray(..) kann man zwar prüfen, ob eine Variable ein Array beinhaltet, man kann aber nicht prüfen, ob ein dynamisches Array dimensioniert ist.
+
Mit <code>IsArray(..)</code> kann man zwar prüfen, ob eine Variable ein Array beinhaltet, man kann aber nicht prüfen, ob ein dynamisches Array dimensioniert/initialisiert ist.
<source>
<source>
-
Dim TestArray() As Long
+
Private Function IsInitializedLongArray(ByRef ArrayToCheck() As Long)
 +
  IsInitializedLongArray = Not ((0 / 1) + (Not Not ArrayToCheck) = 0)
 +
End Function
-
Debug.Print "IsArray(TestArray) = "; IsArray(TestArray),
+
Private Function IsInitializedStringArray(ByRef ArrayToCheck() As String)
-
If (0 / 1) + (Not Not TestArray) = 0 Then
+
  IsInitializedStringArray = Not ((0 / 1) + (Not Not ArrayToCheck) = 0)
-
  Debug.Print "Array ist nicht initialisiert"
+
End Function
-
Else
+
 
-
  Debug.Print "Array ist initialisiert"
+
...
-
End If
+
</source>
</source>
 +
=== Anwendung ===
<source>
<source>
Dim TestArray() As Long
Dim TestArray() As Long
-
 
-
ReDim TestArray(0)
 
Debug.Print "IsArray(TestArray) = "; IsArray(TestArray),
Debug.Print "IsArray(TestArray) = "; IsArray(TestArray),
-
 
+
If IsInitializedLongArray(TestArray) Then
-
If (0 / 1) + (Not Not TestArray) = 0 Then
+
  Debug.Print "Array ist initialisiert", "UBound(TestArray) = "; UBound(TestArray)
 +
Else
   Debug.Print "Array ist nicht initialisiert"
   Debug.Print "Array ist nicht initialisiert"
-
Else
 
-
  Debug.Print "Array ist initialisiert"
 
End If
End If
</source>
</source>
-
 
<source>
<source>
-
Dim TestArray(5) As Long
+
Dim TestArray() As Long
 +
 
 +
ReDim TestArray(3)
Debug.Print "IsArray(TestArray) = "; IsArray(TestArray),
Debug.Print "IsArray(TestArray) = "; IsArray(TestArray),
-
 
+
If IsInitializedLongArray(TestArray) Then
-
If (0 / 1) + (Not Not TestArray) = 0 Then
+
  Debug.Print "Array ist initialisiert", "UBound(TestArray) = "; UBound(TestArray)
 +
Else
   Debug.Print "Array ist nicht initialisiert"
   Debug.Print "Array ist nicht initialisiert"
-
Else
 
-
  Debug.Print "Array ist initialisiert"
 
End If
End If
-
 
</source>
</source>

Aktuelle Version vom 15:31, 21. Jan. 2011


Mit IsArray(..) kann man zwar prüfen, ob eine Variable ein Array beinhaltet, man kann aber nicht prüfen, ob ein dynamisches Array dimensioniert/initialisiert ist.

Private Function IsInitializedLongArray(ByRef ArrayToCheck() As Long)
   IsInitializedLongArray = Not ((0 / 1) + (Not Not ArrayToCheck) = 0)
End Function
 
Private Function IsInitializedStringArray(ByRef ArrayToCheck() As String)
   IsInitializedStringArray = Not ((0 / 1) + (Not Not ArrayToCheck) = 0)
End Function
 
...

Anwendung

Dim TestArray() As Long
 
Debug.Print "IsArray(TestArray) = "; IsArray(TestArray),
If IsInitializedLongArray(TestArray) Then
   Debug.Print "Array ist initialisiert", "UBound(TestArray) = "; UBound(TestArray)
Else
   Debug.Print "Array ist nicht initialisiert"
End If
Dim TestArray() As Long
 
ReDim TestArray(3)
 
Debug.Print "IsArray(TestArray) = "; IsArray(TestArray),
If IsInitializedLongArray(TestArray) Then
   Debug.Print "Array ist initialisiert", "UBound(TestArray) = "; UBound(TestArray)
Else
   Debug.Print "Array ist nicht initialisiert"
End If