allowobjparam文(Ver9.35対応版)
目次−
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;