PB 電子会議室
カテゴリ:PowerBuilderの開発環境
日付:2000年08月02日 18:54 発信者:めめ
題名:RE(14):PB6.5: VCで作成したActiveXコントロールへ配列を渡す方法について
MINORU_Hさん、こんばんは。
>とりあえず、通常のDLLにて置き換える事ができるので、
>DLLの道を選びます。
お疲れさまです。
どこにコメントして良いのか分からなかったので...。
[No.12287 ]
>そのメモリに展開するデータ長が、外部関数の引数の宣言がshort *である為に2バイト
>分しか展開されないのです。前回のryochanさんの記事で思ったんですが、DLLであれば
>External宣言で
>
>function long poo(ref int param[8]) ...
>
>の様に「これだけのデータを外部関数で使うよ」と宣言している為に、PB側で判断できま
>すが、OCXの様にExternal宣言がない(できない?)場合ではshort *の様な宣言ではPBは
>2バイト分しか展開しないのではないでしょうか。(すごく仕様っぽい)
>
>すなわち、明示的に使用する領域を宣言しなければならないのではないでしょうか。
この現象、確認してみました。
VB と PB で 同じ ActiveX を使用して配列の引数を渡してみました。
メモリの内容も見てみましたが...これは PB の仕様なのでしょうか。
>もしそうであれば、OCXには実質的に配列を渡すことができないということになりますが...
>少なくともVCのウィザードでは引数の宣言に使える型はかなり限定されています。
>VARIANT*にすればいいというものではなさそうです。
ウィザードで作成された内容を書き換えてみられては。
LONG * を LONG[] に変えてみたのですが、(4ヶ所程)別に問題ないように思えるのですが。
>>でも、最終的には配列を分解するしかないかもしれないですね。
>
> って事ですかね。
綺麗なやり方ではないかとも思ったのですが。。。
ActiveX 側で配列の変数を用意して、それに対して値の取得/設定するようなメソッドを
用意されるのも一手ではないでしょうか。
それでは。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows NT 4.0
DBMS その他
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.