System.Variants.Null
Delphi
function Null: Variant;
C++
extern DELPHI_PACKAGE System::Variant __fastcall Null(void);
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
function | public | System.Variants.pas System.Variants.hpp |
System.Variants | System.Variants |
説明
Null バリアントを返します。
Null を使用すると、データが不明または見つからないことを示す Null バリアントを取得することができます。Null バリアントは、アプリケーション中のバリアント変数が NULL 値を持たなければならないときに、その変数に代入することができます。バリアント変数に Null を代入してもエラーにはなりません。また、戻り値がバリアントである関数は Null を返すことができます。
Null を Variant 以外の型の変数に代入すると、コンパイル エラーになるか、EVariantTypeMismatch 例外が発生します。たとえば次のコードで、Null バリアントである v をバリアント q に代入する処理は成功しますが、現在 Null であるバリアント v を Test 関数の戻り値である整数に変換しようとすると例外が発生します。
function Test(v: Variant): Integer;
var q: Variant; msg: string; begin q := v; { q はバリアントなので問題ない } if VarIsNull(q) then msg := 'q is a null variant' else msg := 'q is not a null variant'; ShowMessage(msg);
Result := v; { ここで例外が発生する!!!}
end;
procedure TForm1.Button1Click(Sender: TObject);
begin Test(Null);
end;
int Test(Variant v)
{ Variant q = v; // q はバリアントなので問題ない AnsiString msg; if (VarIsNull(q)) msg = "q is a null variant"; else msg = "q is not a null variant"; ShowMessage(msg);
return v; // ここで例外が発生する!!!
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Test(Null());
}
必ず Boolean 値が返される比較の場合を除いて、Null バリアントを使用した式の結果は常に Null バリアントになります。
メモ: Null 関数から返される Null バリアントは、Delphi コードにおける nil 定数や C++ コードにおける NULL マクロとは異なります。nil も NULL もバリアントではありません。nil 定数は、実際のオブジェクトを何も参照していないオブジェクト参照です。NULL マクロは、実際のオブジェクトや値を何も参照していないポインタです。