アプリ版:「スタンプのみでお礼する」機能のリリースについて

CMainFrameのデストラクタでCFileとCArchiveを使ってデータを保存しているのですが、別のクラスで別のデータを読み出すルートを通るとシリアライズできません。CFile::Openは実行され、表面上は関数が成功したようですが、データは保存されません。しかし、そのクラスのシリアライズを通らないときは正常に保存ができます。

いろいろといじっているのですがうまくいきません。見当がつかないのですが、どなたかご教授願えませんでしょうか。

Windows XP 上でVisualStudio2008を使用してMFCプログラミングをしています。

A 回答 (1件)

 こんばんは。



 もしかしたら、CArchiveクラスで読み書きの両方を行ってしまって、プログラムがアボートされてしまっているのではないでしょうか。
 そうであるならば、以下URLの様に、
 http://msdn.microsoft.com/ja-jp/library/0ck300ac …

 読み込み用(CArchive::load)と書き込み用(CArchive::store)を別々に用意しないといけない様です。
 例えば、CArchive::storeで開いたにも関わらず、シリアライズ関数内でRead()/ReadString()を呼ぶと、例外が飛びます。
 CArchive::loadで開いて、Write()/WriteString()を呼ぶと、プログラムがアボートされます。
 ※Windows XP SP3とVisutalStudio2008にて確認しています
    • good
    • 0
この回答へのお礼

ありがとうございます。今、デバッグしていてパスを確認しますと読み込み時と書き込み時で異なっておりました。ファイルを開くときパスを加えないでファイル名だけで開いておりました。

アプリの途中で別のファイルを開くとパスが変わったままでいたようです。大変お騒がせいたしました。

お礼日時:2010/01/08 15:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!