ファイルの複数選択

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
水波形
記事: 106
登録日時: 2009年3月29日(日) 15:45
連絡する:

ファイルの複数選択

#1 投稿記事 by 水波形 »

お世話になっています。
ファイルの選択ダイアログにて、ファイルの複数選択で躓いてしまいました。

ファイルが一つの場合、lpstrFileにファイルパスが返ってきますが、
複数を選択させるとlpstrFileにそのファイルがあるフォルダーが返ってくるようです。

これはどのようにしてフルパスを取得していくのでしょうか。
すいませんがお知恵をお貸しください。
よろしくお願いします。
↓個人的ソフト置き場
http://www.software.jpn.org/
↓萌えゲー製作とかしていたい
http://www.holygate.jpn.org/
たかせ
記事: 215
登録日時: 2006年2月05日(日) 17:10
お住まい: 東京都

Re: ファイルの複数選択

#2 投稿記事 by たかせ »

> ファイルの選択ダイアログにて、ファイルの複数選択で躓いてしまいました。
確認ですがそれはGetOpenFileNameですか?
できればその部分のコードを記載願います。

ちなみにもしGetOpenFileNameであれば
FlagsにOFN_ALLOWMULTISELECTを指定されましたか?
HSABP

#3 投稿記事 by HSABP »

複数選択のlpstrFileの中身は

"フォルダ名\01つ目のファイル名\02つめのファイル名\03つめ...\0\0"
と\0で区切って格納されてる。

\0を区切り文字として分解し一つ一つに
wsprintf(fullpath, "%s%s", フォルダ名, ファイル名)
とでもやる
水波形
記事: 106
登録日時: 2009年3月29日(日) 15:45
連絡する:

#4 投稿記事 by 水波形 »

たかせん様、HSABP様ご回答ありがとうございます。

HSABP様の助言から、以下のようなコードを書きました。
しかし、フォルダパスは取得出来るのですがファイル名が取得できませんでした。
※wsprintf関数はいまいち使い方が分かりませんので・・・・・・
%s%sって何なのでしょうか?^^;

すいませんが、修正の方お願いします。
↓個人的ソフト置き場
http://www.software.jpn.org/
↓萌えゲー製作とかしていたい
http://www.holygate.jpn.org/
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#5 投稿記事 by イグトランス »

こんなかんじでどうでしょうか。
  • MakeStrがEx"\0"を含んだ文字列を扱えないため、FilePathをString型でZeroString使用へ変更。
  • InStr関数呼出の中のEx"\0"もZeroString(1)へ変更(MakeStrと同じようにこれもこうしないとうまくいかないのです)。
  • InStrが返すのは「何文字目であったか」なので、Mid$の「何文字?」の引数とあっていないあたりを修正。
  • 先頭を0文字目とするものと、先頭を1とするものが混在しているので、その調整をより正確にした。
水波形
記事: 106
登録日時: 2009年3月29日(日) 15:45
連絡する:

#6 投稿記事 by 水波形 »

>>イグトランス様
回答ありがとうございます。

コードを拝見させていただきましたが、
う~ん・・・
分かったような分からないような・・・・

とりあえずコピペさせていただきました。
少しずつ理解していきたいと思います。
ありがとうございました。


☆宣伝☆
組み込ませていただいたものを公開していますので、どうぞ。
http://www.activebasic.com/forum/viewtopic.php?t=2667
↓個人的ソフト置き場
http://www.software.jpn.org/
↓萌えゲー製作とかしていたい
http://www.holygate.jpn.org/
返信する