English help on website



allowobjparam文(Ver9.24対応版)
目次COMの呼び出し− allowobjparam文
allowobjparam文は、メソッドの呼び出しで、文字列や数値以外のパラメータを指定することを許可します。(V8.20以降)
各パラメータを自動判定する使い方と、明示指定する使い方があります。


自動判定の使い方

パラメータに1を指定すると、メソッドのパラメータが数値のとき、オブジェクトとして解釈することを許可します。
数値としての呼び出しが失敗したときに、オブジェクトとして再試行します。
強制的にオブジェクトにするには、複数のパラメータを指定する必要があります。

パラメータに2を指定すると、メソッドのパラメータが文字列のとき、16進数2桁が連続するバイトの配列(いわゆるバイナリデータ)として解釈することを許可します。メソッドの戻り値やプロパティが取得されるときは、バイナリを文字列として取得することを許可します。
文字列としての呼び出しが失敗したときに、バイナリデータとして再試行します。
強制的にバイナリデータにするには、複数のパラメータを指定する必要があります。

パラメータに0を指定すると、いずれも許可しない通常の状態になります。

例:
 allowobjparam 1;
 callmethod #obj, $methodname, #objParam; //数値として失敗したときにオブジェクトとして呼び出します
 allowobjparam 0;

例:
 allowobjparam 2;
 $strBinary = getpropstr( #obj, $binaryproperty );
 callmethod #obj, $methodname, $strBinary; //文字列として失敗したときにバイナリデータとして呼び出します
 allowobjparam 0;


パラメータごとの明示指定の使い方

第2パラメータ以降を指定すると、メソッドのパラメータの種類を順番に1つずつ明示的に指定します。
0はそのまま、1のとき数値はオブジェクト、2のとき文字列はバイナリデータとして最初から解釈します。
第2パラメータ以降を指定している場合は、失敗したときの再試行ではなく、強制的に指定した呼び出し方法になります。
全てのパラメータを明示指定している場合は、第1パラメータは呼び出しのためには使われません。
(バイナリデータを受け取るとき場合は第1パラメータの2の指定が使われます)

例:
 allowobjparam 0,1;
 callmethod #obj, $methodname, #objParam; //強制的にオブジェクトとして呼び出します
 allowobjparam 0;

例:
 allowobjparam 0,2;
 $strBinary = getpropstr( #obj, $binaryproperty );
 callmethod #obj, $methodname, $strBinary; //強制的にバイナリデータとして呼び出します
 allowobjparam 0;

例:
 allowobjparam 2/*return*/, 0/*#num1*/, 0/*$str2*/, 1/*#obj3*/, 2/*$binary4*/;
 $binaryRet = callmethod_returnstr( #obj, $methodname, #num1, $str2, #obj3, $binary4 );
 allowobjparam 0;