当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2015年1月20日火曜日

Variant型データの初期値って?

こんにちは。毎年1月は簡単な内容のものを記事にしています。
正月ボケ対策ですね。
読んでる皆さんは、検索エンジンから来ることが多いと思うので関係ないかもしれませんが、記事を書く立場からすると、やはり休み明けは簡単な記事の方が楽なのです。
ブログを長く続けるための自分なりの秘訣だと思っています。

では今日も記事に移る前に
にほんブログ村 IT技術ブログへ
をクリックしましょう。


さて、今日は冒頭でも書いたように簡単な話です。
LotusScriptでプログラムを書く際、データ型にVariant型を使うことは珍しくないでしょう。
便利ですからね。
ところで、このVariant型の初期値ってなんでしょうか?
String型なら""、Integer型なら0とかでしょうが、Variant型の場合って???
Null、Nothing、""、0、etc・・・いろいろ考えられますが。
実際にはEMPTYというデータだそうです。

本当にそうなのかどうかを確認するために、こんなプログラムを書いてみました。
Sub Click(Source As Button)
    On Error Goto ErrProc
   
    Dim ret As Variant
   
    'チェック1----- 変数定義直後で何もしていない
    If Isnull(ret) Then
        Msgbox "変数retは、Nullです", 0, "チェック1"
    End If
    If Isempty(ret) Then
        Msgbox "変数retは、EMPTYです", 0, "チェック1"
    End If
    'チェック1-----
   
    'チェック2----- Nullを代入してみる
    ret = Null
    If Isnull(ret) Then
        Msgbox "変数retは、Nullです", 0, "チェック2"
    End If
    If Isempty(ret) Then
        Msgbox "変数retは、EMPTYです", 0, "チェック2"
    End If
    'チェック2-----
   
    'チェック3----- ""を代入してみる
    ret = ""
    If Isnull(ret) Then
        Msgbox "変数retは、Nullです", 0, "チェック3"
    End If
    If Isempty(ret) Then
        Msgbox "変数retは、EMPTYです", 0, "チェック3"
    End If
    If ret = "" Then
        Msgbox "変数retは、スペースです", 0, "チェック3"
    End If
    'チェック3-----
   
    'チェック4----- Nothingをセットしてみる
    Set ret = Nothing
    If Isnull(ret) Then
        Msgbox "変数retは、Nullです", 0, "チェック4"
    End If
    If Isempty(ret) Then
        Msgbox "変数retは、EMPTYです", 0, "チェック4"
    End If
    If ret Is Nothing Then
        Msgbox "変数retは、Nothingです", 0, "チェック4"
    End If
    'チェック4-----
   
    'チェック5----- Emptyをセットしてみる
    ret = Empty
    If Isnull(ret) Then
        Msgbox "変数retは、Nullです", 0, "チェック5"
    End If
    If Isempty(ret) Then
        Msgbox "変数retは、EMPTYです", 0, "チェック5"
    End If
    'チェック5-----
   
    Exit Sub
   
ErrProc:
    Msgbox _
    "エラーNo " & Cstr(Err) & Chr$(10) & _
    "エラー内容 " & Error     & Chr$(10) & _
    "エラー行数 " & Cstr(Erl), _
    0 + 16, _
    "エラー"
    Exit Sub
End Sub

チェック1の実行結果で分かるように、初期値は確かにEmptyでした。
そして、Nullや""、Nothingもセットできることが分かります。
面白いのがチェック5です。
Emptyという値を代入することができるんですね。
しかし、「Option Declare」を記述して、変数の暗黙宣言を許可しない。とすると、Emptyは利用できなくなります(コンパイルエラーになります)。


やっぱりVariant型はちょっと変わった変数であるのでしょう。
よく利用するだけに取扱には注意しましょう。

というお話でした。
では、今日はこの辺で・・・







【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ


0 件のコメント: