- PR -

Visual Basic6ですが。。

投稿者投稿内容
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-08-12 11:36
引用:

それの回答として
『調べていないだけじゃないですか? ( 言葉の意味は調べましたか? ) 』と反応したのでは」と
思いました。
( ぁぁ、ややこしい )


まさしくその通りです。ややこしくて申し訳ありませんでした。
もっと言葉を添えるべきでした。(悪意はないんですが...)

ただ、同じく質問者さんも意味自体がわからないのであれば、
 「遅延バインディング自体の意味がわからなかったので」
などを添えて頂きたかったとも思ってしまいました。

意味自体は「その言葉」+「とは」で検索してたいてい OK です。



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-08-12 11:55
引用:

遅延バインディングにしている意図は?



本当に遅延バインディングなのでしょうか?

(1)
Dim objRs As Object
Set objRs = CreateObject("ADODB.Recordset")

(2)
Dim objRs As ADODB.Recordset
Set objRs = CreateObject("ADODB.Recordset")

(3)
Dim objRs As ADODB.Recordset
Set objRs = New ADODB.Recordset

(4)
Dim objRs As New ADODB.Recordset

4通りの書き方がありますが、(1)は遅延バインディング、(2)〜(4)は事前バインディングですよね。
で、質問者の方法は(1)なのか(2)なのか、断定できないです。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-08-12 12:13
引用:

todoさんの書き込み (2005-08-12 11:55) より:
引用:

遅延バインディングにしている意図は?



本当に遅延バインディングなのでしょうか?

(1)
Dim objRs As Object
Set objRs = CreateObject("ADODB.Recordset")

(2)
Dim objRs As ADODB.Recordset
Set objRs = CreateObject("ADODB.Recordset")

(3)
Dim objRs As ADODB.Recordset
Set objRs = New ADODB.Recordset

(4)
Dim objRs As New ADODB.Recordset

4通りの書き方がありますが、(1)は遅延バインディング、(2)〜(4)は事前バインディングですよね。
で、質問者の方法は(1)なのか(2)なのか、断定できないです。



(2)も遅延バインディングですよ。
CreateObject("ADODB.Recordset") が何を生成するのかは、実行時に初めて分かることです。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-08-12 12:35
引用:

(2)も遅延バインディングですよ。
CreateObject("ADODB.Recordset") が何を生成するのかは、実行時に初めて分かることです。



ここでは、事前バインディングの方法として紹介されています。

Dim oXL As Excel.Application
Set oXL = CreateObject("Excel.Application")


[ メッセージ編集済み 編集者: todo 編集日時 2005-08-12 12:37 ]
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-08-12 12:39
引用:

todoさんの書き込み (2005-08-12 12:35) より:
引用:

(2)も遅延バインディングですよ。
CreateObject("ADODB.Recordset") が何を生成するのかは、実行時に初めて分かることです。



ここでは、事前バインディングの方法として紹介されています。

Dim oXL As Excel.Application
Set oXL = CreateObject("Excel.Application")


[ メッセージ編集済み 編集者: todo 編集日時 2005-08-12 12:37 ]



NAL-6295です。

そうなんですね。
申し訳ありません。
勉強になりました。
_________________
「伝える」とは「人に云う」と書く。
http://d.hatena.ne.jp/NAL-6295/
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-08-12 12:47
引用:

ここでは、事前バインディングの方法として紹介されています。


こっちは、微妙な書き方が...
CreateObject 関数

引用:

MSDN から引用:
As Object 句を使用してオブジェクト変数を宣言すると、
任意の型のオブジェクトへの参照を含む変数が作成されます。
ただし、その変数を経由したオブジェクトへのアクセスは、
遅延バインディングであり、プログラムの実行時にバインディングされます。


えっと、ただし がどこにかかるかで意味合いが変わる気がします。
As Object にかかるのであれば...

入れる型が決まっていれば、解決できているというわけですか...



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-08-12 12:56
当初の発言は

・CreateObjectの引数に与えている文字列は実行時にしか解決しない。

という考えから実行時になるまで、解決しないのでは無いかなと思っていました。

つまり(2)について文章にするとすれば、

・その変数を利用する部分(つまりCreateObjectしてインスタンスを代入して以降)については確かに事前バインディングなのかもしれませんが、CreateObjectしている部分に関しては実行時にしか解決しない。

と解釈していました。

_________________
「伝える」とは「人に云う」と書く。
言葉を尽くさなければ何も伝わらない。

[ メッセージ編集済み 編集者: NAL-6295 編集日時 2005-08-12 13:05 ]
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-08-12 12:57
> 入れる型が決まっていれば、解決できているというわけですか...
です。COMインタフェースが決まっているか
IDispatch(ここらへんの知識は微妙)経由で呼ぶかの違いです。

4パターンが書かれていたとおり、
その話と CreateObject("Foo") を使うか New Foo を使うかという話
(生成対象の決定を実行時に行うかコーディング時に行うか)
は別です。

スキルアップ/キャリアアップ(JOB@IT)