PB 電子会議室
カテゴリ:PowerBuilderの開発環境
日付:2000年09月01日 00:49 発信者:ryochan
題名:RE(10):PB6.5: win32 API関数 GetOpenFileName()の使用方法について
Takaさんこんばんは。
レスが遅れてすみませんでした。
勘違いもいいとこで、頭がごちゃごちゃになっていました。
そこで整理してみました。
例えば、バッファポインタを使用した関数で、そのバッファを受け取るのには
1.バッファ領域を確保して、
2.バッファのアドレスを取得する。
3.バッファのアドレス値を(数値の引数で)渡す
4.関数実行後、バッファを参照する。(関数内で同一バッファメモリ領域が処理される。)
方法と
2?4を同時に(というか同様に)行う方法として
外部関数の引数でref を使用する方法がある。
今回のblobバッファもこれと同じことだったのですね。
おっしゃる通り、Memcopyもいりませんでした。
試しに、getcurrentdirectory APIを1?4の方法
で行ってみて同様の結果がでました。
refではなく、こちらの処理から入ると素直に覚えやすい気がします。
(結構、頭が固いもので...)
これでも間違いがあれば指摘下さい。
null区切り分解について:
>dmy = String( BlobMid(b_FileName,pos))
あっ、そうかstringはnullまでで切り捨てるのでしたね。
1バイトずつ調べなくてもいいのですね。
いただきました。ありがとうございます。
あと、OPENFILENAMEメンバ変数で
フィルタ定義の
lpstrFilter
lpstrCustomFilter
について実際の関数内の処理が逆になっていると思いませんか?
lpstrCustomFilterでフィルタ定義すると1つのフィルタパターン
しか表示されないし、
なにより、nMaxCustFilterの値は、実はlpstrCustomFilteのサイズです。
でもサンプルをご覧になれば分かりますが、
フィルタはlpstrFilterで定義しています。
ヘッダファイルの順と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.