掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
JScript の Array オブジェクトを利用したコード について (ID:99814)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 上記手法で、利用できるのですね。 利用できますが、IDispatchEx の言語実装の差異により、 メンバ名の「大文字小文字が区別される」という問題があります。 たとえば、そのコードで得た Arrray オブジェクトの要素数を調べる際に、 Debug.Print List.length 'これは OK Debug.Print List.Length 'これは NG という現象が発生します。 Visual Basic では、大文字小文字が自動補正されてしまうため、 この事は、かなり都合が悪いです(VBScript であればまだマシですが)。 自動補正されないよう、「CallByName によるメンバ呼び出し」を検討するか、 「ScriptControl 経由での JScript 呼び出し」にするのが安全かと。 > 1.単なる配列への読み込みや読み出しを行う場合、処理速度的には > どうでしょうか? → 遅くなる、ならない? VB ネイティブの配列と Long 配列など比べれば遅くはなるでしょうが、それ自体は 単なる COM オブジェクトですから、問題視するほど遅くは無いと思います。 Collection や Dictionary をレイトバインドで使ったときと同程度では無いかと。 まぁ、憶測で答えているだけなので、気になるのであれば、 実際に検証されることをおすすめします。 > 2.配列の各中身を取り出すには? > 上の例で、List(n)といった形では取り出せませんでした。 JScript 側の変数に対して、スクリプトコントロール経由で Debug.Print SC.Eval("List[3]") のように取り出すことが可能です。 VB 側の変数から取り出す場合は、 Debug.Print CallByName(List, "3", VbGet) のように書けます。 ただし範囲外のインデックスが指定された場合、前者のコードでは Empty が返されるのに対し、後者は実行エラー 438 が発生します。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.