0

次のようなファイルがあります。

R.D.    P.N.      X       Y        Rot  Pkg
L5      120910    64.770  98.425   180  SOP8
L4      120911   -69.850  98.425   180  SOIC12
L10     120911   -19.685  83.820   180  SOIC10
L9      120911    25.400  83.820   180  0603
L5      120910    62.484  98.425   180  SOP8

と というラベルの付いた 2 つのテキスト ボックスがXinputありYinputます。これらのテキスト ボックスから、ユーザーは値を入力します。値が入力され、ユーザーが「GO」をクリックしたら、ファイルから文字列を取得し、値を列に追加し、値をXinputファイルから列に追加します。XYinputY


私が意味したのは...

したがって、ユーザーが「10.552」Xinputテキストボックスに入力し、「-140.123 をテキストボックスに入力Yinputすると、新しいデータは次のようになります。

R.D.  P.N.      X       Y         Rot  Pkg
L5    120910    75.322  -41.698   180  SOP8
L4    120911   -59.298  -41.698   180  SOIC12
L10   120911   -9.133   -56.303   180  SOIC10
L9    120911    35.952  -56.303   180  0603
L5    120910    73.036  -41.698   180  SOP8

質問:

  • これは可能ですか?
  • 可能であれば、これを行うにはどうすればよいですか?
4

4 に答える 4

1

ADO.Netを使用して、ファイルを構造化データとして読み取ることができます。ado.netでテキストファイルを読み取るための十分なサンプルがあります

adoデータセットで構造化された形式で取得したら、トラバースして値を追加できます。かなり簡単なはずです。

ここに良い記事があります

記事リンク

于 2011-07-19T17:12:18.313 に答える
0

最初のステップとして、単一エントリのクラスを導入します。

 class Entry
    {
      public string Rd { get; private set; }
      public string Pn { get; private set; }
      public double X { get; set; }
      // ... declare other properties

     // Initializes a new instance of the Entry class
     public Entry(string rawData)
     {
         if (rawData == null)
         {
            throw new ArgumentNullException("rawData", "Nullable data structure can not be processed");             
         }

         string[] values = rawData.Split('\t');
         if (values == null || values.Count() != 6)
         {
            throw new ArgumentException("rawData", "Invalid data structure can not be processed");
         }

         this.Rd = values[0];
         Double.TryParse(values[2], out this.X);
         // ....
     }
    }

この構造を構築したら、X、Y に任意の値を簡単に追加できます...

ファイルを 1 行ずつ読み取るには: MSDN から

int counter = 0;
string line;

// Read the file and display it line by line.
System.IO.StreamReader file = 
   new System.IO.StreamReader("c:\\test.txt");
while((line = file.ReadLine()) != null)
{
   Console.WriteLine (line);
   counter++;
}

file.Close();

// Suspend the screen.
Console.ReadLine();
于 2011-07-19T17:23:04.953 に答える
0

これを試してみてください。私はあなたのファイルを持っていないので、これが最善の推測です。私は多くを残していなかったと確信しています。やり過ぎに思えるかもしれませんが、この方法でデータの各値を完全に制御できます。

public class ComponentLocation
        {
            public string ReferenceDesignator { get; set; }

            public string PartNumber { get; set; }

            public double xValue { get; set; }

            public double yValue { get; set; }

            public int Rotation { get; set; }

            public string Package { get; set; }

        }

        public IEnumerable<ComponentLocation> ParseColumns(string fileName)
        {
            IEnumerable<string> rawData = File.ReadLines(fileName);
            var rows = rawData.Skip(1).Select(l => l.Split('\t')).Select(str => new ComponentLocation
                                                                        {
                                                                            ReferenceDesignator = str[0],
                                                                            PartNumber = str[1],
                                                                            xValue = double.Parse(str[2]),
                                                                            yValue = double.Parse(str[3]),
                                                                            Rotation = int.Parse(str[4]),
                                                                            Package = str[5]
                                                                        });
            return rows.ToList();
        }

        public void DoWork(double x, double y, string fileName)
        {
            var components = ParseColumns(fileName);
            //Add values
            foreach (var component in components)
            {
                component.xValue += x;
                component.yValue += y;
            }

            //build file
            StringBuilder sbData = new StringBuilder();
            //header
            sbData.AppendLine("R.D.\tP.N.\tX\tY\tRot\tPkg");
            //data
            foreach (var component in components)
            {
                sbData.Append(component.ReferenceDesignator).Append('\t');
                sbData.Append(component.PartNumber).Append('\t');
                sbData.AppendFormat("{0:###.###}", component.xValue).Append('\t');
                sbData.AppendFormat("{0:###.###}", component.yValue).Append('\t');
                sbData.Append(component.Rotation).Append('\t');
                sbData.Append(component.Package).Append('\t').AppendLine();
            }
            //write
            File.WriteAllText(fileName, sbData.ToString());

        }

        //call DoWork
        DoWork(10.552, -140.123, @"C:\myfile.txt")
于 2011-07-19T18:42:18.253 に答える
-1

ファイルの内容全体を に読み込み、StringBuilder正規表現を試します。

于 2011-07-19T17:48:20.400 に答える