-1

私はかなり長い間この単純なプログラムに取り組んできましたが、何が間違っているのかわかりません。21 番目の文字が「A」のいずれかであるすべての行をプログラムに書き込むようにしようとしています。問題は、実行時に最初のレコードのみを読み取り、そのレコードを繰り返し続けることです。これが私のコードです:

    private void Send(string BaleLine)
    {
        //Setting Stop to false so buttons will work after Stop has been pushed.
        GlobalVariables.Stop = false;
        String Lines;
        String BaleChecker;
        int Counter = 0;

        //File location we are reading from.
        String File = @"C:\Temp\Forte.dat";

        //Creating the new Stream Reader, to read one line at a time.
        System.IO.StreamReader FileReader = new System.IO.StreamReader(File);

        //Writing until all the files are gone.
        if (ApplicationPort.IsOpen == false)
        {
            //Opening port.
            ApplicationPort.Open();
        }
        do
        {
            if (GlobalVariables.Stop == false)
            {
                Lines = FileReader.ReadLine();
                Application.DoEvents();
                //Checking the bale line of the data.
                BaleChecker = Lines.Substring(21, 1);

                if (BaleChecker == BaleLine)
                {
                    //Writing the data to the text box..
                    TextBox1.AppendText(Environment.NewLine + Lines);

                    //Writing the strings to the Application Port.
                    ApplicationPort.Write(Lines);

                    Counter++;

                    //Giving the Forte Data Gatherer a break.
                    if (Counter == 5)
                    {
                        System.Threading.Thread.Sleep(3000);
                        Counter = 0;
                    }
                }
            }
            else
            {
                //Closing the port before leaving the method.
                ApplicationPort.Close();
                return;
            }
        }
        while (Lines != null);

        //Closing the comm port after the writing is finished.
        ApplicationPort.Close();

        //Success message saying that everyhting is written to the comm port.
        TextBox1.AppendText(Environment.NewLine + "All files successfully written to the serial port.");
    }

    private void SendALinebtn_Click(object sender, EventArgs e)
    {
        Send("A");
    }

If ステートメントが失敗した後に文字列を破棄する方法はありますか?

4

2 に答える 2

2

この例では、このリンクから 1 行のメモしか読み取っていません。

Program that reads all lines: C#

using System;
using System.Collections.Generic;
using System.IO;

class Program
{
    static void Main()
    {
    //
    // Read in a file line-by-line, and store it all in a List.
    //
    List<string> list = new List<string>();
    using (StreamReader reader = new StreamReader("file.txt"))
    {
        string line;
        while ((line = reader.ReadLine()) != null)
        {
        list.Add(line); // Add to list.
        Console.WriteLine(line); // Write to console.
        }
    }
    }
}

Output

First line of your file.txt file.
Second line.
Third line.
Last line.

例のリストでは、すべての行が保持されます。

于 2013-07-25T19:50:05.627 に答える