PB 電子会議室
カテゴリ:PowerBuilderの開発環境
日付:2000年07月15日 13:30 発信者:Taka
題名:RE(1):PB6.5: VCで作成したActiveXコントロールへ配列を渡す方法について
MINORU_Hさん、こんにちは。
>コントロール側の引数の型はshort *です。
>VBにて動作確認を行ったところ、問題なく配列の先頭ポインタをコントロール
>側で参照できたのですが、PB6.5にて
>
>int param[5] = {100, 100, 100, 100, 100}
>ole_1.object.poo(param[1])
>
>の様に指定しても1番目のデータしか取得できません。
OLEのメソッド呼び出しにおいて、参照で渡したい引数は、
ole_1.object.method( ref arg_1, ref arg_2 ... )
と記述する、という事がオンラインブックに書かれています。
まずはこの方法から試してみてはどうでしょうか。
ただ.、
>int型で宣言した配列の要素が8byte毎に入っているではありませんか。
この報告からすると、参照渡しに成功してもうまく拾えるがどうか、ちょっとアヤシイですね。
最悪の場合は、配列渡しをやめて、1つずつ値を送る仕掛けに変更することになるかもしれません。
>これは何か私の使っている環境がおかしいのでしょうか。それともPBのメモリの
>割り当てはInt型の配列でもクラスオブジェクトとしてラップされて8byte毎に
>取られるものなのでしょうか。
う?ん、どうなんでしょう???
Any型では元の型の情報がすべて入るので、実バイト数はかなり脹らむ事が想定できますが、
単純なint型の場合でも何か余計な情報が入っている、ということでしょうか...
Win32APIなどで long配列を参照渡しするものがありますが、この場合はうまく動いています。
もっとも外部関数として呼び出すので、PBが独自にバイト数の調整をやっているのかもしれません。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows NT 4.0
DBMS その他
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.