【解決方法】行が csv ファイルに追加されないのはなぜですか

[ad_1]

考えられることはすべて試しましたが、なぜこのコードは csv ファイルに新しい行を追加しないのですか?
ps 私は c# が初めてで、まだすべてを知っているわけではありません。
完全なコードの一部

C#
<pre> // Search for the given postcode, housenumber, addition, description in the CSV file
            string fileName = @"NewPostcodes.csv";
            List<string> lines = File.ReadAllLines(fileName, Encoding.UTF8).ToList();
            bool found = false;
            foreach (string line in lines)
            {
                string[] fields = line.Split(';');
                // if both of them are found do this 
                if (fields[0] == Postcode && fields[1] == Housenumber)
                {
                    if (string.IsNullOrEmpty(Addition))
                    {
                        found = true;
                        MessageBox.Show("Adres gevonden zonder toevoeging: " + Postcode + " " + Housenumber);
                        break;
                    }
                    
                    else if (fields[2] == Addition)
                    {
                        found = true;
                        MessageBox.Show("Adres gevonden met toevoeging: " + Postcode + " " + Housenumber + Addition);
                        break;
                    }
                    else {
                        MessageBox.Show("Adres niet gevonden: " + Postcode + " " + Housenumber);
                        break;
                    }
                }
                else if (fields[0] != Postcode)
                {
                    MessageBox.Show("postcode is niet in de csv. Hij word nu toegevoegd");
                    string modified = Postcode.Insert(4, " ");
                    string newRow = modified + ";" + Housenumber + ";";
                    MessageBox.Show(newRow);
                    lines.Add(newRow);
                    //File.WriteAllLines(@"NewPostcodes.csv", lines.ToArray());
                    break;
                }
                else if (fields[1] != Housenumber)
                {
                    MessageBox.Show("Huisnummer is geen match in de csv");
                    break;
                }
            }

必要に応じて完全なコード

C#
<pre>using System;
using System.CodeDom;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Management.Instrumentation;
using System.Reflection.Emit;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;


namespace WpfApp_PostcodeChecker
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        // csv parser 

        public MainWindow()
        {
            //deze code kan een nieuw csv file aan maken ( als die al niet bestaat) en die bewerken 
            InitializeComponent();

            //hij haalt de postcodes csv op 
            string path = @"Postcodes.csv";

            // Calling the ReadAllLines() function put information in array zipCodes
            string[] zipCodes = File.ReadAllLines(path);


            //List<zipCodeData> zipCodeList = new List<zipCodeData>();
            List<string> ZipCodes2 = new List<string>(); // make a list named ZipCodes2

            foreach (string s in zipCodes) // for each string in zipCodes do{}
            {
                //foreach list
                string[] split = s.Split(';'); // check if file has ; and remove all those


                string modified = split[0].Insert(4, " "); // add extra white spage in firt split (postcode)

                ////zipcode data in array krijgt hij van rij 42
                //zipCodeData data = new zipCodeData();
                //data.PostalCode = modified;
                //data.HouseNumer = split[1];
                //data.HouseNumberExtension = split[2];
                //data.StreetName = split[3];
                //data.City = split[4];

                //zipCodeList.Add(data);

                string newRow = modified + ";" + split[1] + ";" + split[2] + ";" + split[3] + ";" + split[4];
                ZipCodes2.Add(newRow); // add a new row to the list
            }


            File.WriteAllLines(@"NewPostcodes.csv", ZipCodes2.ToArray()); // make a new file for the postocdees


            //List<string> postalCodesList = new List<string>();
            //List<string> streetNamesList = new List<string>();
            //foreach (zipCodeData row in zipCodeList)
            //{
            //    postalCodesList.Add(row.PostalCode);
            //    streetNamesList.Add(row.StreetName);
            //}
        }
        //nodig om te zoeken in het csv bestand
        public class zipCodeData
        {
            public string PostalCode { get; set; }
            public string HouseNumer { get; set; }
            public string HouseNumberExtension { get; set; }
            public string StreetName { get; set; }
            public string City { get; set; }

        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            string Postcode = txtPostcode.Text;
            string Housenumber = txtHousenumber.Text;
            string Addition = txtToevoeging.Text;
            string Discription = txtBeschrijving.Text;


            // Kijken of de velden zijn ingevuld
            if (string.IsNullOrEmpty(Postcode))
            {
                MessageBox.Show("Je hebt Postcode niet ingevuld");
                return; // return omdat de postcode niet is ingevuld 
            }
           
            if (string.IsNullOrEmpty(Housenumber))
            {
                MessageBox.Show("Je hebt huisnummer niet ingevuld");
                return;  // return omdat de huisnummer niet is ingevuld 
            }

            // als postcode niet bestaat voeg hem toe aan het lijstje probeer dat ook eens


            // Search for the given postcode, housenumber, addition, description in the CSV file
            string fileName = @"NewPostcodes.csv";
            List<string> lines = File.ReadAllLines(fileName, Encoding.UTF8).ToList();
            bool found = false;
            foreach (string line in lines)
            {
                string[] fields = line.Split(';');
                // if both of them are found do this 
                if (fields[0] == Postcode && fields[1] == Housenumber)
                {
                    if (string.IsNullOrEmpty(Addition))
                    {
                        found = true;
                        MessageBox.Show("Adres gevonden zonder toevoeging: " + Postcode + " " + Housenumber);
                        break;
                    }
                    
                    else if (fields[2] == Addition)
                    {
                        found = true;
                        MessageBox.Show("Adres gevonden met toevoeging: " + Postcode + " " + Housenumber + Addition);
                        break;
                    }
                    else {
                        MessageBox.Show("Adres niet gevonden: " + Postcode + " " + Housenumber);
                        break;
                    }
                }
                else if (fields[0] != Postcode)
                {
                    MessageBox.Show("postcode is niet in de csv. Hij word nu toegevoegd");
                    string modified = Postcode.Insert(4, " ");
                    string newRow = modified + ";" + Housenumber + ";";
                    MessageBox.Show(newRow);
                    lines.Add(newRow);
                    //File.WriteAllLines(@"NewPostcodes.csv", lines.ToArray());
                    break;
                }
                else if (fields[1] != Housenumber)
                {
                    MessageBox.Show("Huisnummer is geen match in de csv");
                    break;
                }
            }

        }
    }
}

私が試したこと:

だから私は試しました
lines.add(newRows);
fields.add(newRows);
File.WriteAllLines(@”NewPostcodes.csv”, lines.ToArray());
調べてみましたが、csvヘルパーを取得しました。 それは素晴らしいことですが、それを始める前に、これがどのように機能するかを学びたいと思います

解決策 1

行を追加していないことをどのように知っていますか?
最初に確認することは簡単です。データをどこに保存しているか。
EXE フォルダーの場合、デバッグ時には機能する可能性がありますが、ウイルスの活動を減らすために「Program Files」フォルダーが書き込み保護されているため、リリース時に失敗する可能性があります。 ここを参照してください: データはどこに保存すればよいですか?[^] いくつかのより良いアイデアのために。

2 番目に行うことは、何が起こっているのかを正確に把握することです。何行読み取られるか、何を含むか、実行中にコードで何を行うかなどです。

私たちはあなたに代わってそれを行うことはできません.あなたが処理しているデータのシステムにアクセスすることはできません. だから、それはあなた次第になるでしょう。
幸いなことに、何が起こっているのかを調べるのに役立つツール、デバッガーを利用できます。 使い方がわからない場合は、Google で「Visual Studio デバッガー」を検索すると、必要な情報が得られます。

関数の最初の行にブレークポイントを置き、デバッガーでコードを実行します。 次に、コードとデータを見て、何が起こるべきかを手動で解決します。 次に、各行を 1 ステップ実行して、予想どおりの動作を確認します。 そうでない場合は、問題が発生したときであり、後戻りして (またはもう一度実行して詳しく調べて) 原因を突き止めることができます。

申し訳ありませんが、私たちはあなたにそれを行うことはできません – 新しい (そして非常に便利な) スキルを学ぶ時が来ました: デバッグ!

[ad_2]

コメント

タイトルとURLをコピーしました