MFCアプリのCSVファイルを処理

[戻る]
ユウ 2012/01/13(金) 12:54:48
複数のCSVファイル(15個くらい)を読み取ってその中に入っている複数個あるデータの
内3つをピックアップしてボタン一つでList Controlに出力するプログラムを組みたいの
ですが何をどうやったらいいのかわかりません。優しく教えたいただけると嬉しいです。

PATIO 2012/01/13(金) 13:12:53
書かれている内容では情報が足りません。

ぱっと見ですぐに思いつくのは、

ピックアップする条件は?

ピックアップする条件はどうやって指定する?

仮に一つ一つのファイルが十分小さくて
対象になるファイルを全てメモリ上に読み込んでも
大丈夫なくらいメモリが潤沢だったらと考えてみて
何か方法は思いつきませんか?
ざっくりでも良いので手順を考えてみてはどうでしょう。
そうする事で情報としてたりない部分が見えてこないでしょうか。

少なくともファイルを読んで必要な情報を取得する必要があります。
あとは収集した結果を表示するだけですよね。
リストコントロールにデータを設定する方法はご自分で調べみてください。
Web上を検索すれば、実装例くらいならすぐ見つかると思いますので。

PATIO 2012/01/13(金) 13:16:33
あと前のスレッドを見た人がこのスレッドを見るとは限りません。

必要な情報は都度説明するようにした方が無難です。
前のスレッドを参照してもらうと言う方法もあるかもしれませんが、
前のスレッドで散発的に出た情報をきちんと纏めて提示した方が
印象が良いですし、状況を早い段階で理解してもらうにはそちらの方が良いと思います。

ユウ 2012/01/13(金) 13:34:39
>ピックアップする条件は?

A:CSV内の7つのデータの中の1,2,7番目のデータをピックアップしたいです。

>ピックアップする条件はどうやって指定する?

A:どんな方法があるのでしょうか?簡単なものを教えていただけると嬉しいです。

仮に一つ一つのファイルが十分小さくて
対象になるファイルを全てメモリ上に読み込んでも
大丈夫なくらいメモリが潤沢だったらと考えてみて
何か方法は思いつきませんか?

A:CSVファイルを1つにまとめる事も考えましたが、CSVファイルにそれぞれList Control
に出力したいです。

>ざっくりでも良いので手順を考えてみてはどうでしょう。
そうする事で情報としてたりない部分が見えてこないでしょうか。

A:それぞれCSVファイル×15読み取り→CSVファイル内の1,2,7を検索→CSVファイルに付き1つ
のボタンをクリック→それぞれのList Controlに結果を表示

リストコントロールにデータを設定する方法を調べてみます。

PATIO 2012/01/13(金) 17:05:10
前のスレッドでは、CSVは学生毎に一行作成されるように書かれていましたが、
出力されたCSVの1,2,7行目をピックアップするという作業を毎回指示されたら
行なえば良いと言う話なんでしょうか?

そもそも何のために1,2,7行目なんでしょう?

例えば、15個のファイルを順に読み取って、1行目、2行目、7行目のデータを
ピックアップし、1行目のデータは1行目のデータ用の配列に格納。
2行目のデータは2行目のデータ用の配列に格納。
7行目のデータは7行目のデータ用の配列に格納。
としたとして1行目のデータが集まった配列の中のデータは何を意味するのですか?
行番号が何かを特定する為の条件になりうるのでしょうか?

そういう意味ではCSVファイルの出力仕様がきちんと定義されていないので
行番号にどういう意味があるのかがわかりません。
出力仕様とは、出力順とか、どういう条件でデータが出力されるのかとか、
そういう情報です。

あと、作成しているプログラムに何処までの汎用性を持たせるのかと言うのも
考慮するべき内容になります。
例えば、見るべき対象の学生を変更するような場合にプログラムを書き換えないと
変更できないのは不便ですよね。
設定ファイルを書き換えるとかアプリから設定を変更出来るとかしておけば、
想定された範囲内の変更ならプログラムの修正は必要なくなります。
そういう意味で各処理を考える時に今必要な条件で動けば良いと考えるのではなくて
一般化して考えてみると言うのはプログラムの基本的な思考法だと思います。
こうする事で共通の処理を括りだして関数化し、使い回すといったことが出来るように
なります。目の前の状況を解決するためだけにロジックを考えるのではなくて
一般化して考えるようにしてみてはどうでしょうか。

PATIO 2012/01/13(金) 17:10:11
読み直して見たんですが、

もしかしてファイルの個数分だけリストボックスを用意しようとしてますか?
もしそうなら、なんで1,2,7行目をピックアップする必要があるのかが
ますますわかりません。

やっぱり処理全体の流れと言うかどういう事をしたいのかと言う部分を
具体的にまとめないと話が通じません。

たとえば、この出席管理アプリにどういう処理を期待しているのでしょう?
学生毎の出席履歴を確認したいのでしょうか?
それとも講座毎の出席状況を見たいのでしょうか?
やりたい事が洗い出せていないとプログラムの仕様も決まらないと思いますよ。

Alq3 2012/01/16(月) 13:14:02
あなたがなにがわからないか理解できないのでPATIO氏の回答も散逸的になっています。
「なにをどうやったらいいのかわからない」と書かれてもこちらもなにをどう答えてよ
いのかわからないのです。
http://www.hyuki.com/writing/techask.htmlを熟読しましょう。

(1)あなたはCSVファイルがどんなものか理解していますか。
(2)ファイル入出力は理解できますか。
(3)どうすればCSVファイルのアイテムを切り分けられるかわかりますか。
(4)MFCプロジェクトの作成の仕方はわかりますか。
(5)リストコントロールの作成の仕方はわかりますか。
(6)リストコントロールの使い方はわかりますか。

リストにどのように表示されるのかもハッキリしません。
さらに1番目、2番目…と記述するのは御幣を招きます。
CSVファイルには行と列の概念があるはずなので、どちらかはっきりしてください。
リストの1行が3列に分かれていて、
|(1列目の内容)|(2列目の内容)|(7列目の内容)|
という行が何度も繰り返し出力されるということですか?

wood 2012/01/27(金) 07:30:38
>複数のCSVファイル(15個くらい)を読み取って
そのファイル名は常に固定されてるの?
一度に読み取る必要はあるの?

>その中に入っている複数個あるデータの
>内3つをピックアップして
3つのデータの条件は同一条件で抽出可能な値なんですか

>ボタン一つで
ボタンイベントの中のすべての動作を記述すれば実現可能じゃないの?

>List Controlに出力する
 入門書に書いてあるよ、一冊くらい手元にあるでしょ
 MSDNを参考にすれば例題コードも記載されていると思うよ

>プログラムを組みたいのですが何をどうやったらいい
MFCと断っているんだから「Visual Studio 」はもっているんですよね
バージョンくらいは書こうよ

ウィザードはつかったことあるの?
List Controlの貼り付け、とか宣言とか知ってるの?

>優しく
ってどの程度のこといっている
甘えすぎはだめです、ここはヒントをもらう掲示板
完全回答を求めるなら学校に行ってください

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