コンパクトフラッシュを抜き差しするには?

解決


ヤマトフ  2009-02-07 01:13:03  No: 69605

VC++ 2005 で開発している初心者の者です。ご教授お願いします。

入力した文字列のCSVのファイル(文字列以外に情報を付け加えてます)と、入力した文字列をリッチテキスト形式で保存したファイル(文字の色を保存の為)、入力した文字列をビットマップで吐き出すファイル  を出力するソフトを作っております。
読込み(ソフトにより作った各ファイル)や書込み(直接コンパクトフラッシュに書込み)のどちらかをし、コンパクトフラッシュを抜くために安全に取り外しの作業をすると  
「デバイス’汎用ボリューム’を今停止できません。後でデバイスの停止をもう一度実行してください。  と、でます。
このソフトを終了するとコンパクトフラッシュは抜けるようになるのですが。。。。
ソフトを起動してる最中でもコンパクトフラッシュの取り外しができるようにしたいので、皆様方のお力をお貸しくださいませんでしょうか?
よろしくお願いします。


tetrapod  2009-02-07 01:26:03  No: 69606

俺が似た現象になったときは CFileDialog が chdir してしまうせい
だったのだが、その辺の FileDialog 系関数を使っているかい?
CFileDialog, GetOpenFileName, GetSaveFileName 類

もしそうであるならば OPENFILENAME m_ofn の解説を嫁
OFN_NOCHANGEDIR とか


みい  2009-02-07 01:51:35  No: 69607

読み書きの後のファイルクローズは抜けてませんか?
職場でこの手の質問された時はクローズ処理忘れパターンが一番多い(^_^;)


ヤマトフ  2009-02-07 02:05:31  No: 69608

早速の返事、ありがとうございます。
書込み方等  詳しくかかなかったので書いておきます。

読込みの時は、読込み場所を指定したかったので、OpenFileDialog(参考書の通り)を使いました。
CSVファイルは1行ずつ読み込み(クラスに保存)、リッチテキストファイルは  richTextBox->LoadFile  で、表示させてます。

書込み時は、もうコンパクトフラッシュに固定という仕様なので、3種類のファイルの書込み先をINIファイルを使用(GetPrivateProfileStringAで読み込んでます)でドライブを指定してます。
リッチテキストファイルは  richTextBox->SaveFile  で保存
ビットマップは  先輩からもらったプログラムで(初心者なものであまりわからない)かいてます。(こちらは表示の必要がないので保存のみ)
これかな?→System::Drawing::Imaging::ImageFormat::Bmp

下手な説明の仕方ですみません。

tetrapod様へ
ご教授ありがとうございます。
解説の方を読んでみます。  

みい様へ  
ご教授ありがとうございます。
ファイルクローズは最初に作った頃にし忘れてました。(TT)
わけわからんエラーがでたので悩みまくりました
StreamReader  と  StreamWriter を使用した場所では
使っております。

お二人様、解決すれば書込みますんでまたご教授の方お願いします。
(他の方もぜひよろしくお願いします。)


wclrp ( 'o')  2009-02-07 04:56:09  No: 69609

何だよすでにカレントディレクトリの回答があるのかよ


ヤマトフ  2009-02-07 06:08:04  No: 69610

tetrapod様、みい様、wclrp ( 'o')様  ありがとうございました。

無事解決いたしました。
読込み場所を指定する機能を省き、コンパクトフラッシュのあるドライブに
固定という形をとり、FileDialog 系関数を使わないようにすると
無事にいけました。

ほんとにありがとうございました。
わからない事があればまた書込みますんで、よろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加