Domino 9 und frühere Versionen > Entwicklung

Ist ein Variant Leer ?

(1/3) > >>

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