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 (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.