- PR -

テキストファイルの扱い

1
投稿者投稿内容
THE
会議室デビュー日: 2004/02/05
投稿数: 9
投稿日時: 2004-02-05 11:55
はじめまして、よろしくお願いします。
早速質問ですが、改行区切りに保存してあるテキストファイルを
Comboboxに読み込んで、Comboboxで選択されている文字列の変更を
読み込んだテキストファイルに上書きするにはどうしたらよいでしょうか?

テキストの一番最後に書き込みは出来るのですが・・・。
ぜひ、よろしくお願いします。

環境 Winxp ,C#, Windowsアプリケーションです。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-02-05 13:18
ファイルの改行で区切られたそれぞれがコンボボックスの項目になっているということですね?

コンボボックスの選択されている項目の一番上からの順番はSelectedIndexプロパティで取れるでしょうから、ファイルから一行ずつそのindexの数だけ読んでいって記憶しておく。
(StreamReaderのReadLineメソッドというのを使うと一行ずつ取得できて楽かも)
その次の行は読み飛ばして記憶しているデータには変更後の文字列を追加して、ファイルの残りの部分も合わせるとファイル変更後のデータが出来上がっているでしょうから、それをファイルに書き出せば良いのでは?

そういう問題じゃなくて?
THE
会議室デビュー日: 2004/02/05
投稿数: 9
投稿日時: 2004-02-05 14:06
ご返信ありがとうございます
一郎さんの書き込み (2004-02-05 13:18) より:
>ファイルの改行で区切られたそれぞれがコンボボックスの項目になっているということ>ですね?
はいコンボボックスの項目になっています。

>コンボボックスの選択されている項目の一番上からの順番はSelectedIndexプロパティ>で取れるでしょうから、ファイルから一行ずつそのindexの数だけ読んでいって記憶し>ておく。
>(StreamReaderのReadLineメソッドというのを使うと一行ずつ取得できて楽かも)
>その次の行は読み飛ばして記憶しているデータには変更後の文字列を追加して、ファ>イルの残りの部分も合わせるとファイル変更後のデータが出来上がっているでしょう>から、それをファイルに書き出せば良いのでは?
>そういう問題じゃなくて?

はい、頭の中での処理的にはなんとなくわかるのですが、C#(プログラミング)を
初めて間もないもので、実際どのようにコーディングしたらよいかわかりません
具体的にコーディング例を記載していただくと幸いかと思います。
(Combobox1,list.txtを使っていただいて・・・)
ぜひよろしくお願いします。

He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2004-02-05 21:58
# よこやりですいません。

引用:

はい、頭の中での処理的にはなんとなくわかるのですが、C#(プログラミング)を
初めて間もないもので、実際どのようにコーディングしたらよいかわかりません
具体的にコーディング例を記載していただくと幸いかと思います。



とりあえず、デイ・ライトさんが書いたソースを披露してみてはいかがでしょうか?
ビルドが通らないものでも構わないでしょう。
ソース中に適切なコメントを入れておけば、何がしたいのかは伝わります。

プログラミングを初めて間もないのであれば、なおさら自分の手を動かしてみることが大切だと思います。
「切ったり貼ったり」だけじゃ、いつまでたっても自分の力になりません。

具体的なコーディング例が欲しくなってしまうお気持ちはよくわかりますが、「答え」を要求するよりも「どこがわからないのか」を明確に伝えるほうが問題は早く解決するようです。
THE
会議室デビュー日: 2004/02/05
投稿数: 9
投稿日時: 2004-02-05 23:07
この質問を投稿してから、一郎さんのご意見を参考に、
改良してみました、処理的にはうまく動いていると思います。
ただ、コーディング的にはどうでしょうか?
此方に記載します。

private void btnAddnewS_Click(object sender, System.EventArgs e)
{

string result;

result = Interaction.InputBox("試験者名を入力してください。","試験者名入力","",-1,-1);

if (result != "")
{
StreamWriter srList = new StreamWriter
(menList, false, System.Text.Encoding.GetEncoding("Shift_JIS"));

lstShikensya.Items.Add(result);

int i = 0;
int index = lstShikensya.Items.Count;
string [] lstItem = new string[index];

while ( index != i )
{
lstItem[i] = lstShikensya.Items[i].ToString();
srList.WriteLine(lstItem[i]);
i++;
}

srList.Flush();
srList.Close();

MessageBox.Show("'" + result + "' が登録されました。","試験者登録",
MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}

ちなみにComboboxからListBoxに変更しました。
よろしく願いします。
He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2004-02-06 20:02
ん?
これだと、リストの一番最後に新しい項目が追加されてしまうように見えるのですが。
仕様変更ですか?

ソースはよく書けてると思います。
プログラミングを初めて間もない状態でコレだけ書ければ上出来でしょう。

アドバイスするとしたら、
処理ごとに別のメソッドに分けたほうがいいかなとおもいます。
例えばファイルに書き出す処理を分けておけば、後で出力形式が変わった場合なんかでも柔軟に対応できますよね。
あと、ファイルは使う直前に開いて、使い終わったら確実に閉じるようにしておいたほうがなにかと安心です。
【参考】.NET TIPS 確実な終了処理を行うには?

# えらそうですいません。
THE
会議室デビュー日: 2004/02/05
投稿数: 9
投稿日時: 2004-02-06 20:26
Heさん一郎さんご返答ありがとうございました。

ご意見を参考にがんばりたいと思います。

本当にありがとうございました。
また何かありましたらよろしくお願いします

1

スキルアップ/キャリアアップ(JOB@IT)