- ベストアンサー
VB6.0マルチセレクトダイアログで250個のファイルを選択しよう。エラー発生の原因と解決方法は?
- VB6.0のマルチセレクトダイアログで250個のファイルを選択するとエラーが出る問題が発生しています。10個程度の選択ならエラーは出ません。エラーの内容は、GetFileNameが空でファイル名を取得できないことです。エラーの解決方法を教えてください。
- VB6.0のマルチセレクトダイアログで大量のファイルを選択する場合、エラーが発生します。エラーの内容は、GetFileNameが空でファイル名を取得できないことです。現在のコードはGetOpenFileName関数を使用していますが、エラーを回避するためにはどのような修正が必要でしょうか?
- VB6.0のマルチセレクトダイアログでファイルを選択する際に、250個以上の選択ができないエラーが発生しています。10個程度の選択ではエラーは発生しません。エラーの内容は、GetFileNameが空でファイル名を取得できないことです。このエラーを解決するためには、どのような修正を行えば良いでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
前回の質問に、 「バッファが足りないのでは?」 などの回答がありましたが、それらの問題は解決されての再質問ですか? http://oshiete1.goo.ne.jp/qa5707422.html あと、関係ないですけど普通のコントロールを使わないのはなぜですか?
その他の回答 (1)
- BellBell
- ベストアンサー率54% (327/598)
貴殿の先の同内容の質問に回答したものです。 問題点の指摘だけで、解決コードそのものを書きませんでしたが、理解できなかったなら補足ででも追加質問していただければその旨答えるつもりだったんですけどね。 そのものズバリのコードを提示するよりも、自分なりに考えて解決策を見つけたり、ヒントを元に検索して答えを見つける事で問題解決力が身に付くからなんですけどね。 そのものズバリの回答は、先の質問からコードを引用すると以下のような感じですね。 .nMaxFile = 257 'ファイル名のバッファのサイズを設定 .lpstrFileTitle = String(257, Chr(0)) 'フルパス用のバッファを確保 .nMaxFileTitle = 257 'フルパス用のバッファのサイズを設定 .lpstrFile = String(257, Chr(0)) 'ファイル名のバッファを確保 ↓ .nMaxFile = 64251 'ファイル名のバッファのサイズを設定 .lpstrFileTitle = String(64251, Chr(0)) 'フルパス用のバッファを確保 .nMaxFileTitle = 64251 'フルパス用のバッファのサイズを設定 .lpstrFile = String(64251, Chr(0)) 'ファイル名のバッファを確保 実際問題、64251ってのは適当な数字です。 1ファイルで257バイト用意するのが理想で、かけることの250ファイル分 リスト終端はChr(0)が二つ重なる為、+1って計算です。 現実問題、257バイト必要なフルパスファイル名で運用する事は考えにくいでしょうから、実運用上は500ファイルでも余裕で選択できるでしょうね。 バッファが足りないんだから、バッファを増やせばいいだけ。 それでも足りなきゃ(最大同時選択ファイル数が250以上を想定しているなら)128501でも、257001でも、好きな数字を指定してください。
お礼
回答ありがとうございます。 おそらく指摘されてるバッファサイズが問題だと思います。 バッファサイズを大きく取ると、「メモリが足りません」や「メソッドに失敗しました」と表示されますので、パソコンにメモリを増やさないと解決できなさそうです。 他の人のPCで試してみます。 >普通のコントロールを使わないのはなぜですか? 視覚障害者ですので、マウス操作がちょっと・・・