ページ 11

DXライブラリを使ったファイルの読み込み

Posted: 2010年6月24日(木) 15:35
by Limone
やりたいこと:ITWM.txtから1行ずつ読み込む
問題:ビルドは成功するものの、読み込めない
どうすれば良いんでしょう?

void setITEM_DATA(void){
#define file_name "ITWM.txt"
#define full_path file_path file_name
#define Memory_Size 10240 //文字列を格納するメモリ領域のサイズ

int FileHandle ;
// ファイルを開く
FileHandle = FileRead_open( file_path ) ;
test_data td[3]; //構造体から

for(int i=0;i<5;i++){
char *dammy = new char();

//1行ずつ読み込むんでdammyに格納?
FileRead_gets( dammy, Memory_Size , FileHandle ) ;
setRecord(dammy,&td);//読み込んだ後の処理
}

// ファイルを閉じる
FileRead_close( FileHandle ) ;

}

Re:DXライブラリを使ったファイルの読み込み

Posted: 2010年6月24日(木) 15:47
by 削除済み
規約違反コメントでしたので、管理人が削除致しました。
規約を守った投稿をお願いいたします。

Re:DXライブラリを使ったファイルの読み込み

Posted: 2010年6月24日(木) 16:23
by softya
とりあえず、ざっと見ただけでも問題が多数あります。

void setITEM_DATA(void){
#define file_name "ITWM.txt"
#define full_path file_path file_name
#define Memory_Size 10240 //文字列を格納するメモリ領域のサイズ

int FileHandle ;
// ファイルを開く
FileHandle = FileRead_open( file_path ) ; ← full_pathでは?
  FileHandle のエラーをチェックしてください。
test_data td[3]; //構造体から ← このデータはsetITEM_DATA関数からreturnすると無効になりますが問題では?使っているところがありません

for(int i=0;i<5;i++){ ←td[3]を処理するなら5ではなく3では?
char *dammy = new char(); ←char dammy[Memory_Size];では?

//1行ずつ読み込むんでdammyに格納?
FileRead_gets( dammy, Memory_Size , FileHandle ) ;
setRecord(dammy,&td);//読み込んだ後の処理
}

// ファイルを閉じる
FileRead_close( FileHandle ) ;
}

これらだけ直しても動く保証はありません。
ここで、これだけミスしているので他の部分にも相当ミスがあると思います。

Re:DXライブラリを使ったファイルの読み込み

Posted: 2010年6月24日(木) 17:39
by toyo
今回はnewで動的確保する必要はないので
char dummy[Memory_Size];
のほうがいいと思いますがnewで動的に確保した場合は不要になった時点でdeleteしないといけません

for(int i=0;i<3;i++){
char *dummy = new char[Memory_Size];

//1行ずつ読み込むんでdummyに格納?
FileRead_gets( dummy, Memory_Size , FileHandle ) ;
setRecord(dummy,&td);//読み込んだ後の処理
delete [/url] dummy;
}

Re:DXライブラリを使ったファイルの読み込み

Posted: 2010年6月24日(木) 18:55
by ookami
ステップ実行はご存知ですか?
visual c++系なら「visual c++ ステップ実行 ブレークポイント」あたりで検索するとよいと思います。

一行ずつ実行できて、そのたびに変数などの値を見れるので非常に有効なデバッグ手段になりますよ。

Re:DXライブラリを使ったファイルの読み込み

Posted: 2010年6月24日(木) 21:02
by Limone
>FileHandle = FileRead_open( file_path ) ; ← full_pathでは?
ここが原因でした。
ステップ実行も試していたんですが、FileHandleの数値が動いてたので分かりませんでした。

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