// TODO: この位置に読み込み用のコードを追加してください。
CFile* fp = ar.GetFile();
filePath = fp->GetFilePath();
FileLength = fp -> GetLength();
c_image-> pImage = new unsigned short[IMAGEDATA_SIZE];
FileLength = ar.Read(c_image-> pImage, FileLength);
}
今、こうなってるんですが、もしアスキーファイルを読むならどう変えていいんですか?
CString str;
ar.ReadString( str );
っていうか実行時に落ちる件はどうなった?
>デフォルトオープンモードってなに見ればわかる、変更するにはどこを
>いじればいい?
MSDN CArchive の説明より
>CArchive オブジェクトを構築し、入力用か出力用かを指定します。
>アーカイブを構築した後での指定変更はできません
となっていますので、Serialize 関数内ではできないですね。
また
>ファイルのオープン
モードとアーカイブの入出力状態が一致しているかどうかを確認する必要があります。
>アーカイブをクローズする前にファイルの状態が変化するような操作を CFile
に対して行ってはいけません。
>このような操作をするとアーカイブの質を損ないます
ともなっていますので、CArchive に結び付けられている CFile
のモードを変えるのもしてはならないでしょう。
CArchive::Read、ReadString、Write、WriteString がありますので、
バイナリ/テキストの切り替えも必要ないでしょう。
それ以前に、自分でモードを指定したりする場合は Serialize
関数なんか使わないですよね?(^^;
すいません、なんかブラウザの調子がおかしいみたいで、改行が余計に入ってしまうみた
いです。
シリアライズはどっちかっていうとoperator<<で
がんがん流していく用途のためにできてる気がする。
だから、ファイル自体にはアクセスしなくていいようになってるんだろうな・・・
とか、昔納得したような記憶が。
結局、変えなくてもアスキーも読めるんだすか?
やってみてからいえ。
読めないなりよ・・
AfxMessageBox(読み込むぞ);
CString str;
if( ar.ReadString( str ) ){
AfxMessageBox(読めたぞ);
AfxMessageBox( str );
}else{
AfxMessageBox(読めねぇYO!);
}
ファイルフォーマットはどうなったんだ?
ReadStringした後にatoiしたらどうなる?
そもそもアスキーコードを unsigned short 型で読み込むのはおかしいですね。
アスキーコードって文字列ですよね?
えーと、とりあえず256×256のマットに数字を1から256までいれたい
反応早いのも良いんだけど、チャットやっているわけではないので、最初からこのスレッド
読み直して、もう少し考えまとめてみてはどうでしょうか