Takenoff Labs

Lotus Notes/Domino に関する Tips や、クラシックの名曲などを紹介します

[Notes/Domino] レイト・バインディングしたオブジェクトのメソッドに Nothing を渡すとエラーになる

ノーツでも、VB などと同じように、オブジェクトの生成するのに、アーリー・バインディング(宣言時にNewする方法) と レイト・バインディング(宣言時はVariantにして、後からNewする方法) の両方が使えます。

どっちも動作は変わらないと思っていたのですが、こないだ開発していたら、Nothing を引数に渡した場合に動作が違う場合があることを発見しました。(おかげで半日潰しました...... 😥 ) 以下、再現手順です。

--- 再現手順 ---

1. 以下のようなクラスを作ります。

Public Class CTest
	Public Sub Test(doc As NotesDocument) '引数はテスト用につき、使用されません。
		Msgbox "test"
	End Sub
End Class

2. アーリー・バインディングでオブジェクトを生成し、メソッドをコールします。

Dim t As New CTest
Call t.Test(Nothing) 'メッセージボックスが表示される

3. レイト・バインディングでオブジェクトを生成し、メソッドをコールします。

Dim t As Variant
Set t = New CTest()
Call t.Test(Nothing) '「型が一致しません」エラーになる


VBA で似たようなことを試してみたら、両方とも問題なく動作したので、これはノーツ特有の問題なのかもしれません。理由は全く解りませんが(TT

ノーツではおとなしくアーリー・バインディングにしておいたほうが無難なのかもしれませんね......。

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
読み込み中...

トラックバック

トラックバックはありません

コメント

コメントはありません

※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。





(以下のタグが使えます)
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

For spam filtering purposes, please copy the number 2112 to the field below:

^
×