Domino 9 und frühere Versionen > Entwicklung
Ist ein Variant Leer ?
TMC:
Ich benötige eine *saubere* Function, die mir zurückgibt, ob ein Variant leer ist.
Mit "leer" meine ich auch, wenn z.B. in einem String zwar " " steht, aber ein Trim$(Var) = "" ergibt.
Bisheriger Code:
--- Code: ---Public Function IsEmptyValue(vValue As Variant) As Integer
IsEmptyValue = True
If Isempty(vValue) Or Isnull(vValue) Then Exit Function
If Isscalar(vValue) Then
If Not (Trim$(Cstr(vValue)) = "") Then IsEmptyValue = False
Exit Function
End If
If Isarray (vValue) Or Islist (vValue) Then
Forall elem In vValue
If Not (Trim$(Cstr(elem)) = "") Then
IsEmptyValue = False
Exit Forall
End If
End Forall
End If
End Function
--- Ende Code ---
Jetzt kann es aber doch sein, dass vValue ein Array ist, welches Arrays als Elemente enthält, oder?
Wie macht Ihr die Prüfung, ob eine Variable wirklich "leer" ist?
koehlerbv:
Hier wird es philosophisch: Was ist denn "leer" ? Das " " "leer" ist, ist. m.E. schon wieder ein Sonderfall. Selbst ein wirklicher Leerstring muss unter bestimmten Umständen nicht "Variant ist leer" bedeuten. Meines Erachtens ist dies eine Frage, die so gar nicht einfach zu beantworten ist.
Zudem: Willst Du eine "allgemeingültige" Lösung, musst Du auch noch weitere "öfters vorkommende" Datatypes berücksichtigen. Dann geht es gleich weiter: Ist Der Wert 0 (nicht NULL !) "leer" oder nicht ?
Schwierig ...
Bernhard
TMC:
Gut, das mit dem " " könnte man über einen Parameter der Function mitgeben (bBeruecksichtigeSpaces True/False).
Was müsste man denn sonst noch alles berücksichtigen?
Es gibt ja u.a. diverse Rückgabewerte der DataType Function.
Dann kann ich abfragen:
- IsScalar
- IsArray
- IsList
- IsObject
Außerdem:
- IsEmpty
- IsNull
- Is Nothing
Wie ist das eigentlich mit der Verschachtelung von Variant Arrays?
Ich glaube ich kann doch in ein Variant Array ein weiteres Variant Array setzen. Wie weit kann das weiter vollzogen werden - gibt es da eine Tiefengrenze?
TMC:
Hier noch als Nachtrag meine Interpretationen, man korrigiere mich da bitte, falls ich da was falsch verstanden habe:
IsEmpty Function:
Gibt TRUE zurück, wenn der Parameter ein Variant ist und noch kein Wert zugeordnet wurde.
IsNull Function
Prüft, ob ein Variant NULL ist (also Char(0)). Selber zuordnen kann man NULL nur einer Variant-Variable.
Ein leeres String (also Inhalt = "") ist nicht NULL, sondern eine Stringvariable mit der Länge 0.
Is Nothing
Is Nothing ergibt TRUE, wenn ein Objekt gedimmt wurde ohne "New" und noch kein Set erfolgt ist.
Glombi:
Zu
Is Nothing: Is Nothing ergibt TRUE, wenn ein Objekt gedimmt wurde und noch keinem gültigen Objekt zugewiesen (set) wurde.
Du kannst auch mit Set ein Nothing erzeugen, oftmals so
set doc = collection.GetFirstDocument
do while not doc is Nothing
...
set doc = collection.GetNextDocument(doc)
loop
Dann ist doc = Nothing, wenn die Do While Schleife verlassen wurde.
Andreas
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln