Spezielle Werte

Aus Wiki des Deutschsprachige Xbaseentwickler e. V.
Zur Navigation springen Zur Suche springen

Allgemeines

Die Sprache verfügt über spezielle Werte, die hier erläutert werden sollen. Diese Werte sind Bestandteile des Sprachstandards, d.h. sie müssen nicht explizit definiert werden.


Liste der speziellen Werte

NIL

Dieser Spezialwert definiert einen nicht definierten Wert.

Eine numerische Variable, der noch kein Wert zugewiesen wurde, enthält in den meisten Sprachen den Wert 0 (Null). In den meisten Fällen ist dann jedoch keine Unterscheidung möglich, ob der Wert der Variablen tatsächlich 0 (Null) ist (im Sinne von "Kontensaldo ist Null, das Konto ist ausgeglichen), oder 0 im Sinne von NULL (der Wert wurde noch nicht definiert).

In Xbase++ wird jede Variable, die als LOCAL oder STATIC definiert wird, mit dem Wert NIL initialisiert, sofern der Programmierer nicht eine explizite Zuweisung vorgenommen hat:

LOCAL cEins, cZwei := "Drei"

In diesem Beispiel ist der Inhalt der Variablen wie folgt:

cEins => NIL
cZwei => "Drei"

Vergleiche von Variablen mit NIL ergeben immer .F., ausser wenn die Variable selbst den Wert NIL enthält:

cEins := "Abc"
dHeute := date()
nZwei := 1
lBool := .F.
xNil := NIL
? cEins == NIL      => .F.
? dHeute == NIL     => .F.
? nZwei == NIL      => .F.
? lBool == NIL      => .F.
? xNil == NIL       => .T.

NIL und Empty()

Eine Variable, deren Wert NIL ist, wird von der Funktion Empty() als leer (.T.) gemeldet:

cEins := NIL
? Empty(cEins)      => .T.
cEins := ""
? Empty(cEins)      => .T.
cEins := 0
? Empty(cEins)      => .T.


NIL und Type() bzw. ValType()

Da NIL kein definierter Datentyp ist, melden die Funktionen Type() bzw. ValType() immer "U" für "undefined", wenn sie auf eine Variable angewandt werden, deren Inhalt NIL ist.


.F. und .T.

.F. und .T. sind konfigurative Konstanten, die falsch bzw. wahr abbilden. Sie können in Abfrageausdrücken eingesetzt werden:

IF .F.
   ...
ENDIF

Diese Abfrage würde nie ausgeführt werden, da ihre Bedingung durch die Verwendung der konfigurativen Konstante .F. immer verneint würde.