|
分類:[.NET 全般]
以前に相談させていただいたりんりんと申します。 皆様にアドバイスしていただいて大変たすかりました。 ありがとうございます。
またいきずまってしまい相談させていただきました。
とあるファイルがあります。このファイルはtxt形式でも扱えるファイルとします。 このファイルの中から以下に該当する行だけをテキストボックスに書き込みたいと思ってます。 その後テキストボックスに書き出した行を保存できるようにする予定です。
以下の条件を満たす行だけをテキストボックスに書き出します。 Lineまたはcircleと書かれている行の下に書いてあります 10 11 12 13 20 21 22 23 30 31 32 33 これら該当する行の下にある値を抜き出したいと思います。 例をあげますと
Line
10 0 20 0 30 0 11 100.55 21 100.31 31 0 とこのように書かれている場合
Line 0 0 0 100.55 100.31 0 と抜き出したいと思っております。
ソースはこのように書きました。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO;
namespace WindowsFormsApplication1 { public partial class テストプログラム : Form { private string _; public テストプログラム() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string file = openFileDialog1.FileName; StreamReader sr = new StreamReader(file, Encoding.GetEncoding("SHIFT_JIS")); while (sr.EndOfStream == false) { string line = sr.ReadLine(); if ((line == "LINE") || (line == "CIRCLE")) { string kari = sr.ReadLine(); if ((kari == " 10") || (kari == " 11") || (kari == " 12") || (kari == " 13")) { string kari1 = sr.ReadLine(); switch (kari) { case " 10": textBox1.Text += "1点目のX軸は" + kari1 + "\r\n"; break;
case " 11": textBox1.Text += "2点目のX軸は" + kari1 + "\r\n"; break;
case " 12": textBox1.Text += "3点目のX軸は" + kari1 + "\r\n"; break;
case " 13": textBox1.Text += "4点目のX軸は" + kari1 + "\r\n"; break;
} } else {
}
if ((kari == " 20") || (kari == " 21") || (kari == " 22") || (kari == " 23")) { string kari1 = sr.ReadLine(); switch (kari1) { case " 20": textBox1.Text += "1点目のY軸は" + kari1 + "\r\n"; break;
case " 21": textBox1.Text += "2点目のY軸は" + kari1 + "\r\n"; break;
case " 22": textBox1.Text += "3点目のY軸は" + kari1 + "\r\n"; break;
case " 23": textBox1.Text += "4点目のY軸は" + kari1 + "\r\n"; break; } } else {
}
if ((kari == " 30") || (kari == " 31") || (kari == " 32") || (kari == " 33")) { string kari1 = sr.ReadLine(); switch (kari1) { case " 30": textBox1.Text += "1点目のZ軸は" + kari1 + "\r\n"; break;
case " 31": textBox1.Text += "2点目のZ軸は" + kari1 + "\r\n"; break;
case " 32": textBox1.Text += "3点目のZ軸は" + kari1 + "\r\n"; break;
case " 33": textBox1.Text += "4点目のZ軸は" + kari1 + "\r\n"; break; } } else {
}
} sr.Close(); } } }
private void button2_Click(object sender, EventArgs e) { string strFileName;
if ( saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { strFileName = saveFileDialog1.FileName; } else { return; } StreamWriter textFile = new StreamWriter( new FileStream(strFileName, FileMode.Create)); textFile.Write(textBox1.Text); textFile.Close();
}
}
}
しかし以下のエラーがでてコンパイルできません。 閉じている TextReader から読み取ることはできません。
どなたか詳しい方ご教授していただけないでしょうか? また上記のプログラムにもアドバイスをいただけたら幸いです。
繰り返す質問で大変失礼いたしました。
|