PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
13112 | 00/09/06 02:18:51 | RE(8):PBでの外部関数によるポインタの使用 By ryochan |
13111 | 00/09/05 18:34:36 | PBでの外部関数によるポインタの使用(総括のコメント) By M.M |
13107 | 00/09/05 17:45:23 | RE(6):PBでの外部関数によるポインタの使用(7):API引数 By ryochan |
13106 | 00/09/05 17:34:59 | RE(5):PBでの外部関数によるポインタの使用(6):ref宣言 By ryochan |
13105 | 00/09/05 17:33:57 | RE(4):PBでの外部関数によるポインタの使用(5):string By ryochan |
13104 | 00/09/05 17:33:11 | RE(3):PBでの外部関数によるポインタの使用(4):string By ryochan |
13103 | 00/09/05 17:31:00 | RE(2):PBでの外部関数によるポインタの使用(3):構造体2 By ryochan |
13102 | 00/09/05 17:30:14 | RE(1):PBでの外部関数によるポインタの使用(2):構造体 By ryochan |
13101 | 00/09/05 17:28:56 | PBでの外部関数によるポインタの使用(1):ポインタの説明 By ryochan |
カテゴリ:スクリプトの記述
日付:2000年09月05日 17:34 発信者:ryochan
題名:RE(5):PBでの外部関数によるポインタの使用(6):ref宣言
***ref宣言について***
Takaさんの例を参考にしました。
>function long SetCurrentDirectoryA( string buf ) library ...
>だけで呼び出してくれます。
勘のいいみなさんは、「じゃぁ、stringは自動でポインタに変換
(参照渡し)されるのだからref宣言なんてものはいらないのでは?」
と思われるかもしれません。
これなんですよ、混乱するのは。
これは私なりの解釈なので本当はどうなのか
解りませんが...
PBは確かにrefを指定し明示的に
ポインタを引き渡すことができます。
これに付け加えて、「PB側にこれは値をもらうよ」
(言葉がおかしいのですがこれしか思いつきませんでした)
と解釈させるものだと思うのです。
これが無いと、セットされた情報が、PB側に反映されません
よって、関数の実行処理によって引数に結果をセット
させたいときに、たとえポインタ渡しでもref宣言するのです。
ちょっと苦しいですが...
これは10%くらいしか自信ないのですが、超必須のランタイムに
pbvm**.dllってあるじゃないですか。
これってJavaと同じく、名前通りバーチャルマシンだと思うのですが、
ということはPBは独自にOSとは別にメモリ管理を行っているのでは?
PBで使用するメモリについて、外部に渡す場合は
refをつけないと外部のDLLからはreadonlyのみになってしまうのでは?
これはあくまでも私の予想なので聞き流す程度にしてください。
仕組みは解りませんが、readonlyの件は正しいと思います。
でないと説明がつきません。
知っている方はお願いします。
(7)に続きます。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS (記載なし)
DBMS (記載なし)
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.