// image.h image class
#define HEADER_SIZE 7904
#define IMAGEDATA_SIZE 256*256
class CImage
{
public:
char *header;
unsigned short *pImage;
public:
CImage();
~CImage();
};
//image.cpp
#include stdafx.h
#include image.h
CImage::CImage()
{
header= new char[HEADER_SIZE];
pImage = new unsigned short[IMAGEDATA_SIZE];
}
CImage::~CImage()
{
delete header;
delete pImage;
}
このクラスは変えたりしましたか?
256*256だと数が大きすぎて確認するのにテストデータを作るのも
大変だったので3*3にしてやりました。
ファイルは[test.txt]とし
1
2
3
4
5
6
7
8
9
と書いて、テキスト形式で保存しました。
次にmsdev.exeを立ち上げてSDIプロジェクトを作り
ドキュメントクラスのシリアライズにこのようにコーディングしました。
if (ar.IsStoring())
{
// TODO: この位置に保存用のコードを追加してください。
}
else
{
// TODO: この位置に読み込み用のコードを追加してください。
for ( int i=0;i<3;i++){
for( int j=0;j<3;j++ ){
char a[5];
ar.ReadString(a,5);
unsigned short n = atoi(a);
TRACE(%d ,n);
}
TRACE(\n);
}
}
でデバッグ実行して、メニューのファイルの下にある[開く]を選択すると
ファイルダイアログが表示されるので[test.txt]を選択し、[開く]ボタンを
選択しました。
アウトプットをみたところ
1 2 3
4 5 6
7 8 9
と表示されていたので正常に処理が終了したんだなと確認しました。
以上です。
なんか、ややこしくなってきました・・
それでつながるのですか?
>それでつながるのですか?
こういう発言が反感を招くのですよ。この文面では自分が試してみた痕跡が見えないから
です。なんで、
言われたとおりにやってみました。
でも得られる結果は違うようです。
・コンパイルエラーが出ます。
-エラーの場所はこの関数の、この文のところです。
-エラーメッセージは...です。
・ランタイムエラーが出ます。
-エラーの場所はこの関数の、この文のところです。
-エラーメッセージは...です。
・エラーは起きませんが期待した結果と違います。
-入力データはこうなってました。
-読み込んだ結果はこうなってました。
・ちなみに今回ソースの変更した部分はこのようになっています。
...こういった訊き方ができないのですか? あなたは「すいません・・以後気をつけま
す」と書いてくれましたけど、ここで言ってる「以後」とは「この問題が解決した後は」
ではないですよね?
>かーご 2003/01/24(金) 20:11:50
>それでつながるのですか?
何がですか?
#ですかね? よりは好きな日本語かな・・・
>シリアライゼーションのところで
>アスキーデータをXXXXに読み出すのはどうしたらよいでしょうか?
さんのソースは主に最初のこの書き込みに対する答えだと思います。
ビットマップには明らかに何も影響しませんよ。
まだビットマップうんぬんの段階ではないでしょうし。
>かーご 2003/01/24(金) 19:40:38
>このクラスは変えたりしましたか?
ファイルの読み込みだけの例なら変えたりするどころか作りもしないですね。私なら。
>かーご 2003/01/24(金) 18:24:51
> さん、動きません。実行はできますが、ファイル開かないです。
ファイルが開かないの意味がわかりません。
通常シリアライズの時点で開いているはずですし。
void C***2Doc::Serialize(CArchive& ar)
{
*** さんのソース
}
これで問題ないと思いますが。
void C***2View::m_image ?にデータをセットするのはまた別の話。
というかDocViewArchitecture?に従うならm_imageはDocに持たせるべきかと;;
Docの中でViewのポインタ持ってこれます?(もしかしてこの言葉の意味・・・わかる?)
あ、Viewのヘッダーがないm_imageってViewのメンバとは限らない!!
m_imageがグローバルだと話が違ってくる・・・
ややこしく・・・別にないけど。
もしこの書き込みで更に混乱したらごめんなさい。
オマケ
>かーご 2003/01/24(金) 01:59:02
> c_image-> *** = new unsigned short[FileLength];
c_imageの宣言が示されていないのでこの回だけ見ると問題ないように見えますが
このc_imageがCImageで***がpImageだとすると、CImageのコンストラクタで
既にnewしているのでここでnewしなおす必要はないです。
落ちる原因の一端はここにあるかもです。(情報不足でなんともいえませんが)
あなたが技術的に知りたいとということなので
「シリアライズでのテキストファイルの読み込み方」
を書いたまでです。
あなたのソースのデバッグをしているわけではありません。
だいたい、読み込んだ内容をドキュメントクラスで持たずに
ビュークラスで持ってること自体が混乱を招いているのと
私は思います。
ちなみにビットマップファイルを読み込むのは複雑です。
やり方によってはすごく楽になりますが・・・。
それはこの件とはまったく違う話みたいなのでこれ以上
お話はしません。
このスレッドって
>発言される前に「使用上の注意」を必ずお読み下さい。
発言多いけど、黙殺されているのでは?
面白いから見てるだけで。。。
やはり
Visual C++ チュートリアルの「Scribble」
をマスターすることで今抱えている問題(技術的なこと)はすべて
解決されるはずです。