PB 電子会議室
カテゴリ:PowerBuilderの開発環境
日付:2000年09月04日 21:43 発信者:Taka
題名:RE(16):PBでのポインタの使用 (1)
ryochanさん、こんばんは。
ポインタ講座ありがとうございます。
私ごときのアタマではちんぷんかんぷんですが... (^^;ゞ
【外部関数コールにおけるstring型の扱いについて】
PB内の関数どうしのやりとりではどうか解りませんが、外部関数の引数にstring型を使った場合
(または構造体メンバにstring型を使った場合)、PBが自動的にポインタ変換していると思われます。
その根拠は以下の通りです。
例えば SetCurrentDirectoryA。このAPIは引数としてバッファへのポインタを要求しますよね。
でも宣言の表記は、
function long SetCurrentDirectoryA( string buf ) library ...
だけで呼び出してくれます。(ref付きでも問題なし)
もちろん、
function long SetCurrentDirectoryA( long p ) library ...
とし、自力で求めたメモリアドレスを32bit整数で渡してもOKです。
このことは、PBが暗黙的にstring型をポインタ変換していることを意味します。
次に、構造体メンバとしてのstring型。
今回のFILEOPENNAMEを例にすると、
・lpstrInitialDir
・lpstrTitle
のメンバに関しては、実は string型でもうまく機能してくれるんです!(是非やってみてください)
long型でも string型でも同一の動きをするということは、引数の場合と同様に、
ここでもPBが暗黙的にポインタ変換していることが想像できます。
...つづく
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows NT 4.0
DBMS Oracle SQL*Net 8
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Oracle 8.0
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.