allowobjparam についてNo.07416
h-tom さん 12/08/15 12:09
 

h-tom です。

allowobjparam について質問があります。

例) allowobjparam 0,1;

上記のように指定した場合、第1パラメータの扱いはどうなるのでしょうか?

  //修正前
  allowobjparam 1;
  callmethod #xmldoc, "appendChild", #root;
  allowobjparam 0;

  //修正後
  allowobjparam 0,1;
  callmethod #xmldoc, "appendChild", #root;

上記のように修正しても、問題なく動いているので、無視されているような感じ
ですが?
(それ以前に、「allowobjparam 0,1;」という使い方が問題?)

それと、有効範囲ってどうなるのでしょうか?
第1パラメータだけで、0(zero)以外だと、
  allowobjparam 1;
  <有効範囲>
  allowobjparam 0;
という感じになると思いますが、第2パラメータ以降があっても、同じでしょうか?
「allowobjparam 0,1;」でも異常がないので、もしかしたら、次のCOM関連文/関数
のみ有効とか?

[ ]
RE:07416 allowobjparam についてNo.07417
秀まるお さん 12/08/16 10:06
 
>   allowobjparam 0,1;
>   callmethod #xmldoc, "appendChild", #root;

 この場合は#rootがオブジェクト扱いになるということで間違い無いです。
allowobjparamでの第1パラメータは無視されたのと同然になります。

 もしも、

     allowobjparam 0,1;
     callmethod #xmldoc, "appendChild", #root, #child;

 みたいに指定したとしたら、「#child」についてはallocobjparamでの第1
パラメータの指定(この場合0)が効いてきて、結果としてそれが数値として渡
される形になります。つまり、allowobjparamでの第1パラメータは、
allowobjparamでの第2パラメータ以降を指定しなかった所に対して効いてくる
形になります。

> それと、有効範囲ってどうなるのでしょうか?
> 第1パラメータだけで、0(zero)以外だと、
>   allowobjparam 1;
>   <有効範囲>
>   allowobjparam 0;
> という感じになると思いますが、第2パラメータ以降があっても、同じでしょうか?

 ソースコードを見た限りは第2パラメータ以降も同じのようでした。リセット
するのはマクロの開始時点とallowobjparam文の実行時だけで、他で(例えば
メソッド呼び出し後のタイミングで)リセットすることは無いようです。

[ ]
RE:07417 allowobjparamについてNo.07419
h-tom さん 12/08/16 23:58
 

h-tom です。

>つまり、allowobjparamでの第1パラメータは、allowobjparamでの
>第2パラメータ以降を指定しなかった所に対して効いてくる形になります。
なるほど、了解です。

> ソースコードを見た限りは第2パラメータ以降も同じのようでした。リセット
>するのはマクロの開始時点とallowobjparam文の実行時だけで、他で(例えば
>メソッド呼び出し後のタイミングで)リセットすることは無いようです。
やはり、allowobjparamの機能を全て解除するには、「allowobjparam 0;」が、
必要ということですね。

説明ありがとうございます。

[ ]