System.Variants.Null
Delphi
function Null: Variant;
C++
extern DELPHI_PACKAGE System::Variant __fastcall Null(void);
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
function | public | System.Variants.pas System.Variants.hpp |
System.Variants | System.Variants |
Beschreibung
Gibt eine Null-Variante zurück.
Mit Null rufen Sie eine Null-Variante ab, die für unbekannte oder fehlende Daten verwendet werden kann. Null-Varianten können Variablen in einer Anwendung zugewiesen werden, die einen Nullwert enthalten müssen. Wenn Sie einer Variante Null zuweisen, führt dies nicht zu einem Fehler. Jede Funktion mit einem Varianten-Rückgabewert kann auch den Wert Null zurückgeben.
Wenn Sie Null einer Variablen eines beliebigen anderen Typs als Variant zuweisen, führt dies entweder zu einem Compilerfehler oder zu einer EVariantTypeMismatch-Exception. Im folgenden Quelltext kann beispielsweise die Zuweisung der Null-Variante v zur Variante q durchgeführt werden, während die Konvertierung der Variante v mit dem Wert Null in dem Integer-Rückgabewert der Funktion Test eine Exception auslöst.
function Test(v: Variant): Integer;
var q: Variant; msg: string; begin q := v; { ist in Ordnung, weil q eine Variante ist } if VarIsNull(q) then msg := 'q ist eine Null-Variante' else msg := 'q ist keine Null-Variante'; ShowMessage(msg);
Result := v; { dies löst eine Exception aus!!!}
end;
procedure TForm1.Button1Click(Sender: TObject);
begin Test(Null);
end;
int Test(Variant v)
{ Variant q = v; // ist in Ordnung, weil q eine Variante ist AnsiString msg; if (VarIsNull(q)) msg = "q ist eine Null-Variante"; else msg = "q ist keine Null-Variante"; ShowMessage(msg);
return v; // dies löst eine Exception aus!!!
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Test(Null());
}
Außer bei Vergleichen, deren Resultat immer ein boolescher Wert ist, ergeben Ausdrücke, die Null-Varianten enthalten, immer Null-Varianten.
Anmerkung: Die von der Funktion Null zurückgegebene Null-Variante unterscheidet sich von der nil-Konstante in Delphi und dem NULL-Makro in C++. Weder nil noch NULL ist eine Variante. Die nil-Konstante ist eine Objektreferenz, die auf kein Objekt verweist. Das NULL-Makro ist ein Zeiger, der auf kein Objekt oder keinen Wert zeigt.