オブジェクトのシリアル化について

[戻る]
よこ [E-Mail] 2002/02/28(木) 11:19:28
皆さんはじめまして。

早速ですが、オブジェクトのシリアル化で息詰まっています。

自分でもいろいろHelpやHP、書籍等で調べまして、"C**Doc"の中の
"Serialize"の所でファイルへの読み書きができる所までは
わかったので、CArchiveクラスの"WriteObject"を使って
ソースコードを変更して、コンパイルは通り(NoErrorで)、
実際にプログラムを実行してみて”名前を付けて保存”を実行すると、
アプリケーションエラーが発生しファイルへデータを保存することができません。
エラーメッセージは、「メモリが”read”になることができませんでした。」(一部抜粋)

あきらかに宣言が足りないと思うのですが、
どの宣言をどこに書けば良いのかがわかりません。

どなたかアドバイスをお願いします。m(_ _)m
OSはWindows2000でVC++6.0を使っています。

よこ [E-Mail] 2002/02/28(木) 11:21:30
ソースコードは以下のようにしました。

void CListDoc::Serialize(CArchive& ar)
{
  if (ar.IsStoring())
  {
    // TODO: この位置に保存用のコードを追加してください。
    ar.WriteObject(m_pData);
  }
  else
  {
    // TODO: この位置に読み込み用のコードを追加してください。
  }
}

YuO [E-Mail] 2002/02/28(木) 11:29:23
m_pDataは有効なオブジェクトですか?
恐らくどこかで有効でないオブジェクトを扱おうとしているのだと思います。

ar.WriteObject(m_pData);
にブレークポイントをおいて,ステップ実行してみてはどうでしょう。
#落ちた場所からコールバックを遡った方が効率がよいかも。

よこ [E-Mail] 2002/02/28(木) 15:17:01
[[解決]]
YuOさんありがとうございます。

m_pDataを有効なオブジェクトにしましたら
ファイルへ出力するとこができました。

ありがとうございました。

PS
使用上の注意をよく読まずに投稿してしまい、
マルチポストをしてしまいました。
この場をお借りしまして、管理者ならびに
違う掲示板にて、同じ内容の質問を
ご覧になった方々へお詫び致します。
すいませんでした。

古いスレッドには追加発言できません。