- ベストアンサー
csvfileがあるかを判定する関数を教えて下さい。
こんにちは。今、とっても困ってます。助けてください。 VCで作ったプログラムなのですが、exeが開かない現象が起きました。 原因はcsvfileが存在しないためでした。存在しなかったとき、fileが無いことを判定してエラーメッセージか何かを出そうと思ってます。 質問事項 1.csvfileがあるかを見る関数 2.ダイアログを出す以外の方法で、エラーを教える方法 いい方法・案があったら教えて下さい。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ファイルオープンでファイルの有無を判定するのは、常套手段ですね。ファイルをオープンして、エラーをキャッチ、スローされた情報を元にエラー内容を判定します。 TRY { CFile f(pFileName, CFile::modeRead); } CATCH( CFileException, e) { if( e->m_cause == CFileException::fileNotFound ) Beep(); printf( "ERROR: File not found\n"); } END_CATCH 詳しくはマニュアルを見てください。
その他の回答 (3)
- mkii
- ベストアンサー率40% (43/105)
1. の答え Cライブラリだったら _stat WIn32 APIだったら PathFileExists だったかな? 2. の答え ログファイルに吐いておく
お礼
お忙しいところありがとうございました。 新しい関数が勉強できてよかったです。 *2のファイルの有り無しの処理について* ONLINEでデータを取得しグラフに表示するというプログラムなのでダイアログをそこで出すとボタンを押すまで機能が止まってしまうのでダイアログはやめました。 親切にありがとうございました。
- nabezo-
- ベストアンサー率50% (2/4)
「関数で、fileがあるかを判定し、フラグか何かで返してくれる 関数は無いですかね?あるとありがたいです。」 という件についてコメントします。 単にファイルの存在有無の確認でしたら、Win32API の FindFirstFile() という関数が使えると思います。
お礼
お忙しいところ目を通していただきありがとうございました。先ほど正常に動きを確認できました。 nabezo-さんのアドバイスのお陰で勉強になりました。 本当にありがとうございました。
- yatokesa
- ベストアンサー率40% (201/496)
"csvfile"というのはご自身が作ったプログラム中で必要なファイルですか? ファイルをopenしようとしたときにエラーとなったらfileが存在しないと見なしてエラー処理を行えばよいのではないでしょうか。 ダイヤログ以外というと、ビープ(警告)音を鳴らす、ステータスバーにエラーを表示する...などですかね。
お礼
コメントありがとうございます。 ・関数で、fileがあるかを判定し、フラグか何かで返してくれる関数は無いですかね?あるとありがたいです。 ・ビープ音とダイアログに出せばエラーっぽくていい感じですね。やってみます。 いい案をありがとうございました。
お礼
再び分かりやすいアドバイスありがとうございました。 この数日でいろいろ試してみました。yatokesaさんのソースを参考に完成しました。さっき出来上がって達成感を味わっているところです。本当にありがとうございました。