Gemeinsam zu mehr Effizienz in der Anwendungserstellung
K   | 
		K   | 
		||
| (Der Versionsvergleich bezieht 5 dazwischenliegende Versionen mit ein.) | |||
| Zeile 1: | Zeile 1: | ||
[[Kategorie:Code-Schnipsel]]  | [[Kategorie:Code-Schnipsel]]  | ||
| - | 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 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>  | ||
| - | + | 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  | |
| - | + | ||
| - | + | ...  | |
| - | + | ||
</source>  | </source>  | ||
| + | === Anwendung ===  | ||
<source>  | <source>  | ||
Dim TestArray() As Long  | Dim TestArray() As Long  | ||
| - | |||
| - | |||
Debug.Print "IsArray(TestArray) = "; IsArray(TestArray),  | Debug.Print "IsArray(TestArray) = "; IsArray(TestArray),  | ||
| - | + | If IsInitializedLongArray(TestArray) Then  | |
| - | If (  | + |    Debug.Print "Array ist initialisiert", "UBound(TestArray) = "; UBound(TestArray)  | 
| + | Else  | ||
    Debug.Print "Array ist nicht initialisiert"  |     Debug.Print "Array ist nicht initialisiert"  | ||
| - | |||
| - | |||
End If  | End If  | ||
</source>  | </source>  | ||
| - | |||
<source>  | <source>  | ||
| - | Dim TestArray(  | + | Dim TestArray() As Long  | 
| + | |||
| + | ReDim TestArray(3)  | ||
Debug.Print "IsArray(TestArray) = "; IsArray(TestArray),  | Debug.Print "IsArray(TestArray) = "; IsArray(TestArray),  | ||
| - | + | If IsInitializedLongArray(TestArray) Then  | |
| - | If (  | + |    Debug.Print "Array ist initialisiert", "UBound(TestArray) = "; UBound(TestArray)  | 
| + | Else  | ||
    Debug.Print "Array ist nicht initialisiert"  |     Debug.Print "Array ist nicht initialisiert"  | ||
| - | |||
| - | |||
End If  | End If  | ||
| - | |||
</source>  | </source>  | ||
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 ...
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