リストビューからのファイル出力 – プログラミング – Home

リストビューからのファイル出力
 
通知
すべてクリア

[解決済] リストビューからのファイル出力


ponta
 ponta
(@ponta)
ゲスト
結合: 19年前
投稿: 15
Topic starter  

リストビューに表示されているアイテムを
ファイルに出力するプログラムで質問があります。
(「出力」というボタンを押すと、*.txtというファイルが出来上がってきます)

問題は、ファイルが出来上がった中身を見てみると
複数行あるリストビューをファイル出力したときに
ファイル出力されたテキストファイルの内容が、
リストビューに追加された最新行(一行目)に上書きされてしまいます。

iListC = m_ListData.GetItemCount(); //リストビューアイテム数取得
 for(int i = 0; i < iListC; i++)
 {
  //ここでファイルへ書き込み処理
  //改行処理も追加

 }
こんな感じに組んでいます。

リストビューのアイテム数、ループさせているのに
テキストファイルに出力すると、1行目も、2行目も全て同じ内容になってしまいます。

どうしたら、リストビューに表示されてる行のアイテム通りに
テキスト出力されるようになるのでしょうか?

よろしくお願いします。

ーーー
WinXP
MFC
ーーー


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>  //ここでファイルへ書き込み処理
>  //改行処理も追加
このコードを見てみないとなんとも回答できないかと。

>WinXP
>MFC
ついでに VCのバージョンも載せてください。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

iListC = m_ListData.GetItemCount(); //リストビューアイテム数取得
 for(int i = 0; i < iListC; i++)
 {
  //ここでファイルへ書き込み処理
  //改行処理も追加

 }

もっとも肝心なファイルへ書き込み処理が
コメントで隠されているので吟味のしようがありません。


返信引用
ponta
 ponta
(@ponta)
ゲスト
結合: 19年前
投稿: 15
Topic starter  

説明不足で申し訳ないです。
下記に追記します。

ファイル書き込み処理

for(int i = 0; i < iListC; i++)
{

CString csList;

csList.Format(%s,%s,%s,m_ListItem1,m_ListItem2,m_ListItem3);
csList += \r\n;
stdFile.WriteString(csList);

}

VCのバージョンは、6.0です。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>m_ListItem1
>m_ListItem2
>m_ListItem3
ってなに?

csList.Format(%s,%s,%s\n,
m_ListData.GetItemText(i, 0) // i番目の左端のデータ
m_ListData.GetItemText(i, 1) // i番目の真ん中のデータ
m_ListData.GetItemText(i, 2));// i番目の右端のデータ

ってやんないとダメなんじゃないの?


返信引用
ponta
 ponta
(@ponta)
ゲスト
結合: 19年前
投稿: 15
Topic starter  

>Blueさん

m_ListItem1の中に、リストビューで表示する値が入っています。
テキストボックスとかから取ってきた値なのですが・・・。

GetItemTexのメンバ変数を使って、やってみようと思います。
ありがとうございました。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

> m_ListItem1の中に、リストビューで表示する値が入っています。
> テキストボックスとかから取ってきた値なのですが・・・。

だとしたら、for-loopの中でi番目の値を入れてあげないと、
同じのが並ぶのはアッタリマエよね。


返信引用
ponta
 ponta
(@ponta)
ゲスト
結合: 19年前
投稿: 15
Topic starter  

解決しました!
ありがとうございました!


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

なんとなく納得できていないようなので補足。

m_ListItem1、m_ListItem2、m_ListItem3は、リストビューで表示する値が入っています。
だそうですが、書き込みのループの中で上記の値を変数iが変化する毎に更新する処理は
入っていないようですけれど、これでどうして毎回違う情報が書き込まれると思ったんで
しょう?

変数の中身と言うのは自分で更新しない限り変化する事はありません。
具体的に言うとm_ListItem1に代入するとか関数を使ってm_ListItem1にセットするとか
しないと値は変化しないのです。
値が変化していない状態で何回もファイルに書き出しても同じ内容が書き出されるのは
当たり前の話です。
この辺は、デバッガでそのループ内でステップ実行してみればわかると思いますよ。
毎回、同じ内容で書き込んでいるのが確認できるはずです。

とにかく、うまく行っていない状況がいったいどうしてうまく行っていないのかを
理解する所からはじめてください。理解しないでεπιστημηさんの言った通りに
してうまく行っても意味がありません。
バグの修正の肝は、バグの原因を理解してその原因を取り除くことです。
場当たり的な対処療法をバグの修正とは言いません。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

うわっ、間に合わなかった。
これも読んでもらえないかもー。(T-T)


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました