文字の割り当て

解決


烏龍茶  2006-05-02 18:59:33  No: 61625

おはようございます。

ほかの人の質問をみての質問なのですけど、
リストビューにカンマで区切られたテキストファイルを
割り当てることってできるのですか?
お教え願いたいのですがよろしくお願いします。


緑茶  2006-05-02 19:04:29  No: 61626

簡単に出来ますよ。。

取得したテキストを文字列に変換して表示させるだけで出来ます。


烏龍茶  2006-05-02 19:08:24  No: 61627

お早いご返答ありがとうございます。

申し訳ありませんがもう少し具体的に
お教えいただけないでしょうか。
私では理解しかねますので・・・


  2006-05-02 19:16:52  No: 61628

この人出来たらしいからきいてみては。
http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi?print+200604/06040067.txt
意外と簡単だったらしいから。


烏龍茶  2006-05-02 19:25:16  No: 61629

。さん了解しました。

ちなみにほかの人の質問をみての質問と
最初に言いましたけどこの人の質問でした。
Sugiさんにご指導をお願いしてみます。


Blue  2006-05-02 19:36:11  No: 61630

どこまで出来ているのでしょうか?

具体的に

1. ファイルを1行ごと読み込む
2. 1行のデータをカンマ区切りにして分割する
3. 分割されたデータをリストビューに追加する

のどれがわからいのでしょうか?
それと、開発環境によって回答が変わるので、必ず明記しましょう。

  ・OS
  ・VCのバージョン
  ・プロジェクトの種類

例)WindowsXp Pro SP2/VC++6.0 Stand SP6/MFC Application ダイアログ


烏龍茶  2006-05-02 19:55:02  No: 61631

わかりにくくて申し訳ありませんでした。

開発環境:WindowsXp Pro SP2/VC++6.0/MFC/ダイアログベース

私がやろうとしているのファイルを1行ごとに読み込む方法を
まだ理解していないので、アイテムの追加のときにカンマで区
切ってある文字をそれぞれ変数に代入させて表示させようと思
っています。
VCの質問ではなくCの質問になるかと思いますがお教えいただ
けないでしょうか。

Blueさんの
>1. ファイルを1行ごと読み込む
>2. 1行のデータをカンマ区切りにして分割する
>3. 分割されたデータをリストビューに追加する
この方法のやりかたも出来ればお教えいただけますか?


烏龍茶  2006-05-02 20:00:24  No: 61632

追伸

カンマで区切ったテキスト以外は読み込めても
読み込めなくてもどちらでも良いと思っています。
とりあえず今はカンマで区切ったテキストファイルを
読み込んで表示させてみたいのです。


Blue  2006-05-02 20:22:53  No: 61633

> ファイルを1行ごとに読み込む方法
テキストファイルであれば、CStdioFileクラスを使いましょう。
ReadStringで1行ごと読み込めますのでそれを使います。

詳しくは MSDN(ヘルプ)やネットで調べてみてください。


烏龍茶  2006-05-02 20:42:40  No: 61634

ファイルを1行ごとに読み込む方法は理解しました。

先ほどの質問のカンマで区切ってある文字をそれぞれ
変数に代入させる方法をお教えいただけないでしょうか。


Blue  2006-05-02 20:54:36  No: 61635

CStringのFindメソッドとMidメソッドを上手いこと使って
文字列分割してください。

出来ているところまでのソースを提示してもらえると具体的なアドバイスが出来ますので。


烏龍茶  2006-05-02 21:02:17  No: 61636

MFCでカラムにカンマで区切ったテキストを割り当てるプログラムです。

static const char *split_normal(const char *l, CString &r)
{
        r.Empty();

        while ( *l ) {
                if ( _ismbblead( *l ) ) {
                        r += *l++;
                        r += *l++;
                } else if ( *l == ',' ) {
                        l++;
                        break;
                } else {
                        r += *l++;
                }
        }

        return l;
}

void dsCSVSplit(const char *line, CStringArray &sa)
{
        sa.RemoveAll();

        while ( *line ) {
                CString clm;
                if ( *line == '"' )
                        line = split_dbl( line + 1, clm );
                else
                        line = split_normal( line, clm );

                sa.Add( (const char *)clm );
        }
}

これで出来ました。

意見があればお願いします。


  2006-05-02 21:10:53  No: 61637

http://denchu.jp/tips/tips05.html


烏龍茶  2006-05-02 21:18:37  No: 61638

。さんの言うとおり
http://denchu.jp/tips/tips05.html
からいただきました。

Blueさんのアドバイスをいただく前に
自分で解決させてすみませんでした。

Blueさん。意見を聞いてくださいまして
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加